"Or"运算符如何工作?(C++)

How does the "Or" operator work? (In C++)

本文关键字:Or C++ 工作 何工作 运算符      更新时间:2023-10-16
#include "stdafx.h"
#include <iostream>
int x = 0;
int main(){
std::cin >> x;
if (x == 5 || 6) {
std::cout << "5 or 6n";
}
else {
std::cout << "Not 5 or 6n";
}
    return 0; 
}

这段简单的代码只向控制台返回"5或6",无论您输入的是什么数字。我真的不明白为什么。如果||是or操作符,那么它应该可以工作。如果x是5或6,它应该显示"5或6"。如果不是,显示"不是5或6"。有人能解释一下吗?

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指针值,或空成员指针值转换为false;任何其他值转换为true