有人可以帮我理解原因:
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++);
Run Code Online (Sandbox Code Playgroud)
给:
3
5
4
4
ATa*_*lor 13
变量++表示:在计算表达式后递增变量.
++变量意味着:在计算表达式之前增加变量.
这意味着,要将您的示例翻译为数字:
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
Run Code Online (Sandbox Code Playgroud)
这是否清楚,还是需要进一步解释?
需要注意的是:'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)
}
Run Code Online (Sandbox Code Playgroud)
相比:
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
}
Run Code Online (Sandbox Code Playgroud)
需要了解的事情:
1. Java 从左到右计算表达式
2. ++i-pre-increment 即赋值前递增
3. i++ - postincrement 即赋值后递增
System.out.println(i++ + i++);
Run Code Online (Sandbox Code Playgroud)
op1=i++
op2=1++
sum=op1+op2
i++ - 后递增 i 的值
总和=3
System.out.println(++j + ++j);
op1=++j
op2=++j
sum=op1+op2
++i - 预先递增 i 的值
然后,op1和op2相加,打印总和为5,j的值为
System.out.println(k++ + ++k);
op1=k++
op2=++k
和=op1+op2
将 k 的值赋给 op1,然后递增 k。op1=1,k=2
增加 k 的值,然后分配给 op2。op2=3,k=3
总和 = 4
System.out.println(++l + l++);
此处也应用上述逻辑。
| 归档时间: |
|
| 查看次数: |
9622 次 |
| 最近记录: |