小白求知java操作符的问题~~~~

如下代码:
int i = 1;
boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3);
System.out.println(b);
System.out.println(i);

运行结果bfalse i3

有很多解析是这样:
int i = 1;
boolean b = !(i++ == 3) ^ (i++ ==2) && (i++==3)

!(i++ == 3) 1不等于3 取反 true i=2
i++ ==2 2等于2 true i=3
!(i++ == 3) ^ (i++ ==2) 结果为 false
因为是短路与 第二个不用看
所以结果为 b=false i=3

我想知道为什么一开始不运算第三个小括号里的?也就是解析里面短路与后面的不用看了?

2个回答

加()只是说在运算时把它当做一个整体,但是括号外部还是按照正常的顺序运行
所以短路与运算把右边整个括号都省略掉了
我是这样理解的

littlewhitesui
Eslicp? 好的 谢谢你
大约 2 个月之前 回复

就像数学里的加减乘除,都是加减或都是乘除时,就从左往右计算

littlewhitesui
Eslicp? okok 谢谢!
大约 2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问