假设我有以下代码:

    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/

10-12 00:24
查看更多