如果
我的教授正在讲这个问题,我目前遇到了困境。不幸的是,没有人能解释它为什么会发生。
x = 3
并且z没有被赋值,为什么z = x-- - --x
的结果是2?我的教授正在讲这个问题,我目前遇到了困境。不幸的是,没有人能解释它为什么会发生。
x = 3
并且z没有被赋值,为什么z = x-- - --x
的结果是2?-- 前缀
表示在评估表达式之前将进行递减,而 后缀--
表示在评估表达式之后将进行递减。--prefix
和postfix--
,我认为这是相当容易理解的。我根本没有试图破坏你的编辑 - 我真的很喜欢你的第一个编辑 - 我不知道你可以使用基本的HTML标签,这让我摆脱了那个荒谬的*和-的情况。我认为你最后一次编辑的句子结构并不是很容易理解,但如果你再次编辑我的答案,这样你就可以得到你的改进的功劳,我会很高兴的 :) - SimpleVarx
值都适用。(x) - ((x-1)-1)
= (x) - (x-2)
= x - x + 2
= 2
。 - inspectorG4dget好的,很简单:
让我们添加括号:
z = ( x-- ) - ( --x )
^^ 这就是编译器在标记化后看到您的代码的方式。
编译器从左到右计算等式(右部分)
现在,
x--
等于从 x 中弹出值,然后将其递减并将值重新推回内存。好的,让我们这样做:
X 的当前值为 3,递减后为 2,所以在等式中我们得到了 3,但 X 将包含新值 2。
--x
等于递减 X 值,然后将该值弹出到等式中。让我们这样做:
X 的当前值为 2(因为前一个操作使其递减),现在我们想再次减少它。2-1=1,懂了吗。
现在,回到整个方程式:z = (3) - (1) = 2
。
x--
(x 减减) 减去--x
(减减 x)。 - Mattx--
和--x
的区别。 - Steve B