单行中的多个后缀和前缀操作
Multiple postfix and prefix operations in single line
int i=0;
int j = --i;
int k = i++ + --i + i-- + j-- + --i + i;
System.out.print("k= "+k); // k=-10
我似乎无法理解 k 的值怎么会是 -10?
这是我觉得应该发生的事情。根据我的计算结果应该是-5。
Expression |Evaluation | Current Values
| | i=0 ,j=-1
i++ | 0 | i=1 ,j=-1
i++ + --i | 0 + 0 | i=0 ,j=-1
i++ + --i + i-- | 0 + 0 + 0 | i=-1 ,j=-1
i++ + --i + i-- + j-- | 0 + 0 + 0 + -1 | i=-1 ,j=-2
i++ + --i + i-- + j-- + --i | 0 + 0 + 0 + -1 + -2 | i=-2 ,j=-2
i++ + --i + i-- + j-- + --i + i; | 0 + 0 + 0 + -1 + -2 + -2 | i=-2 ,j=-2
如有错误请指正
*在更正我把 i 当作 0 而不是 -1 的错误后 *
表达式现在计算为 -10 (-1 + -1 + -1 + -1 + -3 + -3)。
谢谢
Expression |Evaluation | Current Values
| | i=-1, j=-1
i++ | -1 | i= 0, j=-1
i++ + --i | -1 + -1 | i=-1, j=-1
i++ + --i + i-- | -1 + -1 + -1 | i=-2, j=-1
i++ + --i + i-- + j-- | -1 + -1 + -1 + -1 | i=-2, j=-2
i++ + --i + i-- + j-- + --i | -1 + -1 + -1 + -1 + -3 | i=-3, j=-2
i++ + --i + i-- + j-- + --i + i; | -1 + -1 + -1 + -1 + -3 + -3 | i=-3, j=-2
如果你正确地进行递减和递增,你将得到以下结果:
int k = -1 + (-1) + (-1) + (-1) + (-3) + (-3)
等于 -10
我认为您缺少
中 'i' 值的更改
int j = --i;
此处i变为-1,则j = -1
所以您从 i=-1、j=-1 值开始。
int i=0;
int j = --i;
int k = i++ + --i + i-- + j-- + --i + i;
System.out.print("k= "+k); // k=-10
我似乎无法理解 k 的值怎么会是 -10?
这是我觉得应该发生的事情。根据我的计算结果应该是-5。
Expression |Evaluation | Current Values
| | i=0 ,j=-1
i++ | 0 | i=1 ,j=-1
i++ + --i | 0 + 0 | i=0 ,j=-1
i++ + --i + i-- | 0 + 0 + 0 | i=-1 ,j=-1
i++ + --i + i-- + j-- | 0 + 0 + 0 + -1 | i=-1 ,j=-2
i++ + --i + i-- + j-- + --i | 0 + 0 + 0 + -1 + -2 | i=-2 ,j=-2
i++ + --i + i-- + j-- + --i + i; | 0 + 0 + 0 + -1 + -2 + -2 | i=-2 ,j=-2
如有错误请指正
*在更正我把 i 当作 0 而不是 -1 的错误后 *
表达式现在计算为 -10 (-1 + -1 + -1 + -1 + -3 + -3)。 谢谢
Expression |Evaluation | Current Values
| | i=-1, j=-1
i++ | -1 | i= 0, j=-1
i++ + --i | -1 + -1 | i=-1, j=-1
i++ + --i + i-- | -1 + -1 + -1 | i=-2, j=-1
i++ + --i + i-- + j-- | -1 + -1 + -1 + -1 | i=-2, j=-2
i++ + --i + i-- + j-- + --i | -1 + -1 + -1 + -1 + -3 | i=-3, j=-2
i++ + --i + i-- + j-- + --i + i; | -1 + -1 + -1 + -1 + -3 + -3 | i=-3, j=-2
如果你正确地进行递减和递增,你将得到以下结果:
int k = -1 + (-1) + (-1) + (-1) + (-3) + (-3)
等于 -10
我认为您缺少
中 'i' 值的更改int j = --i;
此处i变为-1,则j = -1
所以您从 i=-1、j=-1 值开始。