如下代码:
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
我想知道为什么一开始不运算第三个小括号里的?也就是解析里面短路与后面的不用看了?