使用 OR 运算符进行布尔赋值

zyz82

假设我有以下代码:

    int j = 0;
    boolean x = true, y = false, z;
    z = (x || ((j++) == 0));
    z = (y || ((j += 2) > 0));

j最终值为2

z 在第一个分配中,将有truefalse,这是真的

z 在第二次分配中,将有falsetrue,这是真的

为什么最终值是2?拥有 true || 和有什么区别 假和假||真?

我不是在问“短路”运算符,

我只需要对赋值运算符进行更多解释,以及第一个 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

&& 和 || 运算符对两个布尔表达式执行条件与和条件或运算。这些运算符表现出“短路”行为,这意味着仅在需要时才评估第二个操作数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用&运算符进行布尔匹配

使用std :: swap而不是使用'='运算符进行赋值

可以在if语句中使用赋值运算符。好像使用了布尔表达式

使用复制运算符作为赋值运算符

使用继承的赋值运算符

错误使用赋值运算符 ==?在飞镖

使用赋值运算符“=”时的 SettingWithCopyWarning

按值的赋值运算符不使用显式副本构造函数进行编译

Gcc 使用 memcpy 进行隐式复制赋值运算符而不是成员方式复制

使用xor运算符进行布尔检查是否是好习惯?

使用链式布尔值或三元运算符进行变量重新分配

Ocaml:使用布尔运算符进行模式匹配

使用STL向量复制构造函数与赋值运算符

已删除未使用的赋值运算符错误

使用赋值运算符而不是隐式构造函数

Python:在 Numpy 数组赋值中使用相等运算符

使用复合赋值运算符解决转换警告

在表达式内部使用赋值运算符

C ++使用赋值运算符模拟类型转换

无法在c#中使用mysql赋值运算符

使用比较运算符的Python条件变量赋值

同时使用2个变量的串联赋值运算符

使用赋值运算符时实际发生了什么?

基类派生类赋值运算符的使用

使用postfix运算符而不是赋值运算符的优点/局限性是什么?

我可以在赋值运算符的左侧使用三元运算符吗?

您可以在 Python 中将加法赋值 ( += ) 运算符与海象运算符 ( := ) 结合使用吗?

PHP:使用三元运算符进行赋值以外的其他操作–有效的用例?

使用“ |”进行grepping 替代运算符