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

ybzsozfc  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(398)
  1. int i=0;
  2. int j = --i;
  3. int k = i++ + --i + i-- + j-- + --i + i;
  4. System.out.print("k= "+k); // k=-10

我似乎不明白为什么k的值是-10?
这是我认为应该发生的事情。根据我的计算结果应该是-5。

  1. Expression |Evaluation | Current Values
  2. | | i=0 ,j=-1
  3. i++ | 0 | i=1 ,j=-1
  4. i++ + --i | 0 + 0 | i=0 ,j=-1
  5. i++ + --i + i-- | 0 + 0 + 0 | i=-1 ,j=-1
  6. i++ + --i + i-- + j-- | 0 + 0 + 0 + -1 | i=-1 ,j=-2
  7. i++ + --i + i-- + j-- + --i | 0 + 0 + 0 + -1 + -2 | i=-2 ,j=-2
  8. i++ + --i + i-- + j-- + --i + i; | 0 + 0 + 0 + -1 + -2 + -2 | i=-2 ,j=-2

如果我错了,请纠正我。

  • 纠正了我把i取为0而不是-1的错误之后*

表达式现在计算为-10(-1+-1+-1+-1+-1+-3+-3)。谢谢。

  1. Expression |Evaluation | Current Values
  2. | | i=-1, j=-1
  3. i++ | -1 | i= 0, j=-1
  4. i++ + --i | -1 + -1 | i=-1, j=-1
  5. i++ + --i + i-- | -1 + -1 + -1 | i=-2, j=-1
  6. i++ + --i + i-- + j-- | -1 + -1 + -1 + -1 | i=-2, j=-2
  7. i++ + --i + i-- + j-- + --i | -1 + -1 + -1 + -1 + -3 | i=-3, j=-2
  8. i++ + --i + i-- + j-- + --i + i; | -1 + -1 + -1 + -1 + -3 + -3 | i=-3, j=-2
bmvo0sr5

bmvo0sr51#

如果您正确地执行递减和递增,您将得到以下结果: int k = -1 + (-1) + (-1) + (-1) + (-3) + (-3) 等于-10

mf98qq94

mf98qq942#

我认为你缺少“i”值的变化

  1. int j = --i;

这里我转-1,然后j=-1
从i=-1,j=-1开始。

相关问题