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


减量运算符 --xx-- 的不同之处在于它 returns。到操作结束时,x 总是比原来少一个,但是 --x returns new [=16 的值=],而 x-- returns xold 值在它被递减之前。这同样适用于 ++xx++.

让我分解一下。这是一些与上面等效的代码:

int digit = getDigit(position, input[tempIndex], radix);
countArray[digit]--;
int count = countArray[digit];
temp[count] // Do something with the value

顺便说一句,这是一个经典的例子,说明为什么你不应该为了简洁而牺牲清晰度。