有人可以帮我理解原因:
int i=1;
int j=1;
int k=1;
int l=1;
System.out.println(i++ + i++);
System.out.println(++j + ++j);
System.out.println(k++ + ++k);
System.out.println(++l + l++);
给:
3
五
4
4
解决方法:
变量意味着:在评估表达式后增加变量.
变量意味着:在计算表达式之前增加变量.
这意味着,要将您的示例翻译为数字:
System.out.println(i++ + i++); //1 + 2
System.out.println(++j + ++j); //2 + 3
System.out.println(k++ + ++k); //1 + 3
System.out.println(++l + l++); //2 + 2
这是否清楚,还是需要进一步解释?
需要注意的是:’println’之后所有这些变量的值等于’3′.
由于OP问这个行为实际上有用,所以这里有一个“用例”.
int i = 0;
while(++i < 5) { //Checks 1 < 5, 2 < 5, 3 < 5, 4 < 5, 5 < 5 -> break. Four runs
System.out.println(i); //Outputs 1, 2, 3, 4 (not 5)
}
相比:
int i = 0;
while(i++ < 5) { //Checks 0 < 5, 1 < 5, 2 < 5, 3 < 5, 4 < 5, 5 < 5 -> break. Five runs
System.out.println(i); //Outputs 1, 2, 3, 4, 5
}
标签:java
来源: https://codeday.me/bug/20190925/1815989.html