"Or"运算符如何工作?(C++)
How does the "Or" operator work? (In C++)
#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
相关文章:
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 模式"allocate memory or use existing data"
- N-API include an .so or dll
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 将 OR 逻辑运算符从 C++ 转换为 Fortran
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- 我如何将 OR 与 if 语句一起使用字符串
- 将 if 语句中的字符与 or 进行比较
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- "No such file or directory" C++标头问题
- 处理 std::enable_if<...中谓词的逻辑"OR">
- C++ 虽然语句不适用于字符串和"or"
- 我在 #include < bits/stdc++h.> 放置时出错"No such file or directory"
- Python Bitwise OR
- 逻辑'double free or corruption (fasttop)'错误
- 这在C++ "It does not own the underlying data, and so is cheap to copy or assign"中意味着什么