提问者:小点点

增量/增量混淆


当我们在这里减少代码时会发生什么:

temp[--count tArray[getDigit(位置,输入[temIndex],基数)]]

在这种情况下,如果temp为1:我们是否先递减,以便分配为0?这种递减有多快?它似乎总是让我在数组括号内感到困惑。


共2个答案

匿名用户

尝试在不同的缩进级别上打开括号:

temp[                                                // get this index in temp
    --                                               // decrement by 1
    countArray[                                      // get this index in countArray
        getDigit(position, input[tempIndex], radix)  // call getDigit()
    ]
]

在人类可读的术语中,它调用getDigit()索引到count tArray,然后递减该值并使用它索引到temp

递减运算符--xx--不同,因为它返回的内容。在操作结束时,x总是比原来少1,但--x返回x的新值,而x--返回x在递减之前的旧值。这同样适用于xx

匿名用户

让我分解一下。这是一些相当于上面的代码:

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

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