当我们在这里减少代码时会发生什么:
temp[--count tArray[getDigit(位置,输入[temIndex],基数)]]
在这种情况下,如果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()
]
]
在人类可读的术语中,它调用getDigit()
索引到count tArray
,然后递减该值并使用它索引到temp
。
递减运算符--x
与x--
不同,因为它返回的内容。在操作结束时,x
总是比原来少1,但--x
返回x
的新值,而x--
返回x
在递减之前的旧值。这同样适用于x
和x
。
让我分解一下。这是一些相当于上面的代码:
int digit = getDigit(position, input[tempIndex], radix);
countArray[digit]--;
int count = countArray[digit];
temp[count] // Do something with the value
顺便说一句,这是一个经典的例子,说明为什么你不应该为了简洁而牺牲清晰。