2 java pre-increment post-increment
int z = 1;
System.out.println(z++ == ++z);
System.out.println(++z == z++);
Run Code Online (Sandbox Code Playgroud)
输出将是:
false
true
Run Code Online (Sandbox Code Playgroud)
我不明白为什么,请向我解释一下.
ass*_*ias 10
操作数==从左到右评估,并且++具有更高的优先级,因此您的代码等同于:
int z = 1;
int tmp1 = z++; //tmp1 = 1 / z = 2
int tmp2 = ++z; //tmp2 = 3 / z = 3
System.out.println(tmp1 == tmp2);
tmp1 = ++z; //tmp1 = 4 / z = 4
tmp2 = z++; //tmp2 = 4 / z = 5
System.out.println(tmp1 == tmp2);
Run Code Online (Sandbox Code Playgroud)
我想你明白之间的差别z++和++z:
tmp1 = z++; 可以分解为: tmp1 = z; z = z + 1;tmp2 = ++z;可以分解为:z = z + 1; tmp2 = z;int z = 1;
System.out.println(z++ == ++z);
System.out.println(++z == z++);
Run Code Online (Sandbox Code Playgroud)
z ++是后增量,++ z是预增量.在计算表达式之后,后增量会增加值,并且预增量会在计算表达式之前增加该值.
因此,
int z = 1;
System.out.println(z++ == ++z); // 1 == 3 false
System.out.println(++z == z++);// 4 == 4 true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
654 次 |
| 最近记录: |