如果我有以下代码:
int pop()
{
return stack[--stp];
}
Run Code Online (Sandbox Code Playgroud)
我知道它做了两件事.它返回元素'stp'中一维数组'stack'中包含的值.它也在递减'stp'.
但这种情况发生在哪个顺序?
它是否返回元素的值stp,然后递减stp?
或者它是否递减stp,然后返回现在由递减引用的元素的值stp?
如果代码是:
int top()
{
return stack[stp-1];
}
Run Code Online (Sandbox Code Playgroud)
它有什么不同吗?
我很抱歉,我知道这是非常常见的编码风格 - 我仍然在理解简洁,未注释的代码方面有些麻烦 - 甚至是这样的基础知识.抱歉.
它将递减stp,然后从新stp值的位置返回数组中的值.
--stp是一个"前缀减量",它被定义为递减参数(stp),然后返回新值.它有一个名为"postfix decrement"的对应物stp--,它会递减stp然后返回旧值 - 因此stack[stp--]会给你当前stp偏移量的值,但仍会递减stp.
最后,你的版本stack[stp-1]将从同一个地方返回值stack[--stp],但stp它本身将保持不变.