为什么以下不执行到5?
int i = 5;
System.out.println(i-- + (5 - i--));
输出:
6
由于 i-- 在语句执行后递减并且 (5 - i--(应该是 5)) = 0 那么值不应该等于 5 吗?我在这里缺少什么概念?
为什么以下不执行到5?
int i = 5;
System.out.println(i-- + (5 - i--));
输出:
6
由于 i-- 在语句执行后递减并且 (5 - i--(应该是 5)) = 0 那么值不应该等于 5 吗?我在这里缺少什么概念?
踢球
i-- + (5 - i--)
5 (i value is 4) + (5 - 4 (i value is 3))
5 + 1
后缀递减运算的结果i--
是 . 之前变量的值--
。然而,变量在评估后仍然递减。
后缀递减表达式的结果不是一个变量,而是一个值。
和
从变量的值中减去值 1,并将差值存储回变量中。
i-- 操作先于所有其他操作,请参见此处的顺序。
所以发生的事情是 i 首先递减,每次你到达 i--,然后所有其他事情都在发生,正如你所知道的那样。
如果你想更多地探索它:寻找这些的答案:
这很有趣!
方程的评估是从左到右进行的
当最左边的 (i-- 由于后减而遇到时,将使用值 5,然后减 1。类似地,当遇到下一个 i-- 时,值是 4..
因此,
(5+(5-4)=6
从左到右评估,我们有:
a = i--
b = 5 - i--
c = a + b
a
= 5 因为 -- 是后减量。
b
= 5 - 4(已经递减,本次操作后会再递减)
a
+ b
= 6