如果条件CPP困惑

时间:2011-08-10 07:12:42

标签: c++

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

if(1 && (1 || 0) != 0)  or  if(1 || (1 && 0) != 0)

在上面的if语句中,执行/验证语句的顺序是什么 (从左到右)从左到右,如果第一个参数/表达式为真,它会评估第二个表达式/参数吗?对于逻辑AND和OR运算符都是如此。

感谢。

5 个答案:

答案 0 :(得分:4)

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

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

他们都是从左到右评估。

答案 1 :(得分:1)

从左到右

  1. 首先执行1.然后执行(1 || 0) != 0。为此,它执行1 || 0 - >是的,所以整个事情都是真的。
  2. 首先执行1 - 这是真的,所以它会短路并返回true。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

这两件事情根本不同,请阅读 D Morgans Laws !s

答案 4 :(得分:0)

让我们一步一步地分解它:

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

所以(1 || 0) != 0true

1 && true的逻辑和&&的定义是正确的。操作

or||的定义/关键字,但第一部分已经为真,因此我们再次对表达式进行短路,并执行if块内的代码。