“Or”运算符如何工作? (在C ++中)

时间:2016-11-02 19:35:58

标签: c++

#include "stdafx.h"
#include <iostream>

int x = 0;

int main(){
std::cin >> x;
if (x == 5 || 6) {
std::cout << "5 or 6\n";
}
else {
std::cout << "Not 5 or 6\n";
}
    return 0; 
}

这个简单的代码只会向控制台返回“5或6”,无论你输入什么号码。我真的不明白为什么。如果||是或运营商,那么它应该工作。如果x为5或6,则应显示“5或6”。如果不是,则显示“不是5或6”。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:5)

if (x == 5 || 6)

应该是

if (x == 5 || x == 6) 

你认为你正在检查“如果x是5或x是6”,但你实际上是在检查“如果x是5,或者是6”。在C ++中,if语句中的任何非零数字都会计算为true,因此您的初始if等同于:

if (x == 5 || true)

行为在C ++标准中指定如下:

  

零值,null     指针值,或null成员指针值转换为false;任何     其他值转换为true。

相关问题