int z = 1;
System.out.println(z++ == ++z);
System.out.println(++z == z++);
输出将是:
false
true
我不明白为什么,请向我解释一下。
的操作数==从左到右评估 http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.21-120,以及++
具有更高的优先级,因此您的代码相当于:
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);
我假设您了解之间的区别z++
and ++z
:
-
tmp1 = z++;
可以细分为:tmp1 = z; z = z + 1;
- whereas
tmp2 = ++z;
可以细分为:z = z + 1; tmp2 = z;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)