多个 ||在 if 语句中
Multiple || in if statement
当我输入"cm"、"m"、"in"或"ft"时,第二个循环总是显示"无效数据"。
我的 OR 语句做错了吗?
#include "standard_lib_facilities.h"
int main()
{
string unit = "";
double number = 0;
int counter = 0;
bool run = true;
while (counter < 10){
cout << "Enter unit: (cm, m, in, ft)"<<endl;
cin >> unit;
while (run)
{
if (unit != "cm" || unit != "m" || unit != "in" || unit != "ft")
{
cout << "invalid data" << endl;
cin >> unit;
}
else
run = false;
}
cout << "Enter number: ";
cin >> number;
cout << number << unit << endl;
run = true;
++counter;
}
keep_window_open();
return 0;
}
unit != "cm" || unit != "m" ...
的计算结果将始终为 true
。如果unit
等于"cm",则不等于"m"。您想使用 AND ( &&
) 而不是 OR ( ||
)。
if (unit != "cm" && unit != "m" && unit != "in" && unit != "ft")
>or
在这里是错误的操作;如果这些测试中的任何一个失败,它会将输入标记为无效;换句话说,输入必须同时是cm
、m
、in
和ft
,这是不可能的。
您需要and
,以便仅在所有这些测试都失败时才无效。或者,如果你改变测试的意义并检查肯定的"它有效吗?"而不是双重否定的"它不是无效的吗?",可能会不那么令人困惑:
if (unit == "cm" || unit == "m" || unit == "in" || unit == "ft") {
run = false;
} else {
// invalid
}
|| 表示"或"。
无论您输入什么,它要么与"cm"不同,要么与"m"不同,或者与"in"不同,因此无论您输入什么内容都被视为非法。
看看 &&(和)。
相关文章:
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 如果中的多个语句是否与多个 if 相同?
- 多个'if'语句,不带'else'
- 如果不是多个语句,请使用 if 语句
- C++使用逗号运算符的多个控制语句
- 如何在单行语句中C++递减多个变量?
- 调用多个类而不带 if 语句
- sqlite3绑定多个语句值
- 在多个对象上执行同一语句的零成本抽象
- 在 if 语句中处理多个 or 的更优雅的方法是什么
- 一个语句中没有多个 cout 的错误/警告
- 有没有更有效的方法来替换这些多个 IF 语句?
- 具有多个变量的 if 语句
- 何时使用 if 语句选择多个循环而不是单个循环
- 如果一个人失败,如何防止多个CIN语句失败
- if 语句中的多个或条件
- 编写多个 If 语句的优雅方式
- 单个cout中的多个语句产生不同的结果
- 如果有多个参数的语句需要是真实的
- 在单个if语句中测试多个布尔值