我正在学习java,这个逻辑让我感到困惑。
这里不是i=20(+1)+20(+1)
吗?
为什么选择 41
而不是 42
?
jshell> int i = 20
i ==> 20
jshell> i=i++ + i++
i ==> 41
查看此代码在Ideone.com运行.
最佳答案
实际上,表达式 i=i++ + i++;
等于i=i++ + i;
。为什么?后者i++
结果值永远不会被使用并且不会被传播。后缀加法的结果i++
只要值 i
就可以使用稍后添加到表达式中,结果生效。然而后者之后i++
i
的结果值未使用。
如果你想达到42
的结果,将整个结果赋回 i++
后,需要执行后缀赋值( i
)变量:
int i = 20;
i = i++ + i;
i++;
System.out.println(i);
关于java - 为什么jshell显示这个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73822770/