Increment/Decrement 混乱
Increment/Decrement Confusion
当我们在此处递减代码时发生了什么:
temp[--countArray[getDigit(position, input[tempIndex], radix)]]
如果在这种情况下 temp 为 1:我们是否先递减以便分配给 0?这种减少有多直接?它似乎总是让我在数组括号内感到困惑。
尝试在不同的缩进级别上解包括号:
temp[ // get this index in temp
-- // decrement by 1
countArray[ // get this index in countArray
getDigit(position, input[tempIndex], radix) // call getDigit()
]
]
在 human-readable 术语中,它调用 getDigit()
索引到 countArray
,然后递减该值并使用它索引到 temp
。
减量运算符 --x
与 x--
的不同之处在于它 returns。到操作结束时,x
总是比原来少一个,但是 --x
returns new [=16 的值=],而 x--
returns x
的 old 值在它被递减之前。这同样适用于 ++x
和 x++
.
让我分解一下。这是一些与上面等效的代码:
int digit = getDigit(position, input[tempIndex], radix);
countArray[digit]--;
int count = countArray[digit];
temp[count] // Do something with the value
顺便说一句,这是一个经典的例子,说明为什么你不应该为了简洁而牺牲清晰度。
当我们在此处递减代码时发生了什么:
temp[--countArray[getDigit(position, input[tempIndex], radix)]]
如果在这种情况下 temp 为 1:我们是否先递减以便分配给 0?这种减少有多直接?它似乎总是让我在数组括号内感到困惑。
尝试在不同的缩进级别上解包括号:
temp[ // get this index in temp
-- // decrement by 1
countArray[ // get this index in countArray
getDigit(position, input[tempIndex], radix) // call getDigit()
]
]
在 human-readable 术语中,它调用 getDigit()
索引到 countArray
,然后递减该值并使用它索引到 temp
。
减量运算符 --x
与 x--
的不同之处在于它 returns。到操作结束时,x
总是比原来少一个,但是 --x
returns new [=16 的值=],而 x--
returns x
的 old 值在它被递减之前。这同样适用于 ++x
和 x++
.
让我分解一下。这是一些与上面等效的代码:
int digit = getDigit(position, input[tempIndex], radix);
countArray[digit]--;
int count = countArray[digit];
temp[count] // Do something with the value
顺便说一句,这是一个经典的例子,说明为什么你不应该为了简洁而牺牲清晰度。