单行中的多个后缀和前缀操作


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;

这里我变成 -1,然后 j = -1

所以你从 i=-1, j=-1 值开始。

最新更新