C++ 对if条件CPP感到困惑

C++ 对if条件CPP感到困惑,c++,C++,对if条件感到困惑的是,它如何执行以下语句 if(1 && (1 || 0) != 0) or if(1 || (1 && 0) != 0) 在上面的if语句中,执行/验证语句的顺序是什么。 (从左到右或从右到左)如果从左到右,那么如果第一个参数/表达式为true,它是否计算第二个表达式/参数?逻辑AND和OR运算符都是这样吗 谢谢。如果第一个操作数的计算结果为false,则逻辑&短路(因为false&&x对于所有x都是false) 如果第一个操作数的计算结

对if条件感到困惑的是,它如何执行以下语句

if(1 && (1 || 0) != 0)  or  if(1 || (1 && 0) != 0)
在上面的if语句中,执行/验证语句的顺序是什么。
(从左到右或从右到左)如果从左到右,那么如果第一个参数/表达式为true,它是否计算第二个表达式/参数?逻辑AND和OR运算符都是这样吗


谢谢。

如果第一个操作数的计算结果为
false
,则逻辑
&
短路(因为
false&&x
对于所有x都是
false

如果第一个操作数的计算结果为
true
,则逻辑
|
短路(因为
true | | x
对于所有x都是
true


它们都从左到右求值。

如果第一个操作数求值为
false
,则逻辑
&
短路(因为
false&&x
对于所有x都是
false

如果第一个操作数的计算结果为
true
,则逻辑
|
短路(因为
true | | x
对于所有x都是
true

它们都是从左到右计算的。

是从左到右的

  • 首先执行1。然后执行
    (1 | | 0)!=0
    。为此,它执行1 | | 0->true,因此整个过程都是真的
  • 第一个执行1-这是真的,所以它短路并返回真
  • 从左到右

  • 首先执行1。然后执行
    (1 | | 0)!=0
    。为此,它执行1 | | 0->true,因此整个过程都是真的
  • 第一个执行1-这是真的,所以它短路并返回真

  • 从左到右如果第一个表达式为真,则短路;&如果第一个表达式为假。

    从左到右。|如果第一个表达式为真,则短路;如果第一个表达式为假,则短路。

    这两件事是根本不同的去读摩根定律吧!这两件事根本不同去读摩根定律吧!让我们一步一步地把它分解:

    (1 | | 0)
    变为
    true
    ,因为1使表达式短路

    所以
    (1 | | 0)!=0

    根据逻辑&&运算符的定义,
    1&&true
    为true


    | |
    的定义/关键字,但第一节已经为true,因此我们再次短路表达式,如果执行了块,则执行
    中的代码

    让我们一步一步地将其分解:

    (1 | | 0)
    变为
    true
    ,因为1使表达式短路

    所以
    (1 | | 0)!=0

    根据逻辑&&运算符的定义,
    1&&true
    为true


    | |
    的定义/关键字,但第一节已经为true,因此我们再次短路表达式,如果执行了
    块,则执行
    中的代码

    我还要指出,
    =
    的优先级高于
    &&
    |
    ,因此在对结果应用
    &&
    |
    之前会计算差值。我还要注意
    =的优先级高于
    &&
    | |
    ,因此,在对结果应用
    &&
    |
    之前,将计算差值。