假设我有以下代码:
int j = 0;
boolean x = true, y = false, z;
z = (x || ((j++) == 0));
z = (y || ((j += 2) > 0));
j的最终值为2
第一个分配中的z将具有true或false,这是true
第2个分配中的z将具有false或true,这是true
为什么最终值为2?
||真之间有什么区别?错误和错误|| true?
我不是在问“短路”操作员,
我只需要更多有关assign运算符的解释,以及第一个j不会更改j的值,第二个j可以更改。
最佳答案
||操作员从左到右进行验证。
就你而言
第一个条件true || false
,一旦||
找到true
,就不必检查其他条件,因为无论如何结果都是正确的。多数民众赞成在这里的原因x||((j++)==0)
一旦x = true(如果已计算),则下一条语句(j++==0)
被跳过。
第二个条件false || true
,一旦||
找到false
,它就必须检查下一个条件。
参考> https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
&&和||运算符执行条件与和条件或
对两个布尔表达式的运算。这些运营商展示
“短路”行为,这意味着第二个操作数是
仅在需要时评估。
关于java - 使用OR运算符进行 boolean 分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47413429/