具有逻辑OR的IF语句

时间:2015-10-29 19:17:17

标签: c++ if-statement logical-operators

if(1 == 2 || 4)
{
cout<<"True";
}
else
{
cout<<"False";
}

这是我如何阅读上述内容。如果1等于2或4,则打印为true。否则,打印错误。执行此操作时...打印为true。显然我在这里误解了一些东西。 1不等于2或4.这不会使它变错吗?

5 个答案:

答案 0 :(得分:5)

是的,我犯了同样的错误。

再次阅读句子:

  

如果1等于2或4,则打印为true。

“2”和“4”都指“如果1等于[...]”。这意味着,句子只是

的缩写
  

如果1等于2或 1等于 4,则打印为真。

这引导我们进入if - 子句

if (1 == 2 || 1 == 4)

代替。

1 == 2 || 4为真,因为(1 == 2) == false4 == true进行OR运算,产生true(false或true = true)。

答案 1 :(得分:2)

  

这是我如何阅读上述内容。如果1等于2或4,则打印为true。否则,打印错误。执行此操作时...打印为true。显然我在这里误解了一些东西。 1不等于2或4.这不会使它变错吗?

不,1等于2或4. 4为真(因为它不为零)。所以任何“或4”也是如此。因此,“1等于2 或4 ”是真的。

答案 2 :(得分:0)

这不是if语句如何在C ++中工作。如果你想知道某件事是否等于某件事或那件事,那就是

if (this == this_thing || this == another_thing)

你有什么

if(1 == 2 || 4)

获得评估为

if ((1 == 2) || 4)
if (false || true)
if (true)

所以if语句永远都是真的。

答案 3 :(得分:0)

它评估为true,因为如果你检查一个整数的布尔值(就像你用数字4做的那样),它将评估为true。就像上面提到的人一样,你必须把它分开。

答案 4 :(得分:0)

用你的短语

  

如果1等于2或4,则打印为真

你需要添加一对单词来获得正确的等效C ++短语

  

如果1等于2或等于 4,则打印为真

因此它将采用以下方式

if ( 1 == 2 or 1 == 4 )
{
    cout << "True";
}
else
{
    cout<<"False";
}

至于原始状况

1 == 2 || 4

然后编译器按照以下方式考虑(由于运算符的优先级):

( 1 == 2 ) || 4

根据C ++ Stanbdard

  

运算符==和!=都产生真或假,即结果   输入bool。

因此,1 == 2等于false,那么你得到

false || 4

其中4不等于0转换为布尔true,因此整个条件的计算结果为true