C++ 对if条件CPP感到困惑
对if条件感到困惑的是,它如何执行以下语句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(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 | | 0)!=0
。为此,它执行1 | | 0->true,因此整个过程都是真的(1 | | 0)!=0
。为此,它执行1 | | 0->true,因此整个过程都是真的从左到右如果第一个表达式为真,则短路;&如果第一个表达式为假。从左到右。|如果第一个表达式为真,则短路;如果第一个表达式为假,则短路。这两件事是根本不同的去读摩根定律吧!这两件事根本不同去读摩根定律吧!让我们一步一步地把它分解:
(1 | | 0)
变为true
,因为1使表达式短路
所以(1 | | 0)!=0
为真
根据逻辑&&运算符的定义,1&&true
为true
或
是| |
的定义/关键字,但第一节已经为true,因此我们再次短路表达式,如果执行了块,则执行中的代码 让我们一步一步地将其分解:
(1 | | 0)
变为true
,因为1使表达式短路
所以(1 | | 0)!=0
为真
根据逻辑&&运算符的定义,1&&true
为true
或
是| |
的定义/关键字,但第一节已经为true,因此我们再次短路表达式,如果执行了
块,则执行中的代码 我还要指出,=
的优先级高于&&
和|
,因此在对结果应用&&
或|
之前会计算差值。我还要注意=代码>的优先级高于&&
和| |
,因此,在对结果应用&&
或|
之前,将计算差值。