具有多个变量的 If 语句
If statements with multiple variables
我正在尝试将 if
语句用于多个比较操作,但 day
变量在我的 if
语句中不起作用。
这是我的代码:
int day;
string rain;
cout << "What day of the week is it?" << endl;
cin >> day;
while (0 < day < 8)
{
cout << "Is it raining? Please type 'yes' or 'no' " << endl;
cin >> rain;
if ((0 < day < 3) && (rain == "yes"))
cout << "Read in bed" << endl;
else if ((0 < day < 3) && (rain == "no"))
cout << "Go out and play!" << endl;
else if ((2 < day < 8) && (rain == "yes"))
cout << "Take an umbrella!" << endl;
else
cout << "No umberella needed" << endl;
cout << "What day of the week is it?" << endl;
cin >> day;
}
cout << "Invalid day sorry" << endl;
获得 Read in bed
或 go out and play
,但从未获得 Take an umbrella
。
如果我输入 day = 9
,我的代码也可以工作。
这与 if 语句和多个变量无关,您的 0 < day < 3
实际上应该读作 0 < day && day < 3
。顺便说一句,你不需要在同一个 if 语句的每个分支中测试它,它不太可能改变。
这不是 C++ 的工作方式:
0 < day < 3
你必须改变它
day > 0 && day < 3
您需要使用逻辑 AND (&&
) 运算符更正涉及 day
变量的条件。
例如,0 < day < 8
表示您正在针对两个不同的值测试 day
,即 day
是否在此范围内。因此,在您的情况下,应使用逻辑运算符和 &&
组合这两个比较。因此,应该是这样的:
day > 0 && day < 8
您比较 day
的其他条件也是如此。
有关逻辑运算符的更多详细信息,请参阅参考资料:
https://en.cppreference.com/w/cpp/language/operator_logical
使用7 < day && day < 0
一旦你写 0 < day < 3
C++ 计算其中之一然后比较变成 boolean < integer
我觉得您的代码有更好的方法:我可以到达所有端点
while (true) {
cout << "What day of the week is it?" << endl;
cin >> day;
if (7 < day && day < 0 ){
cout << "Invalid day sorry" << endl;
break;
}
cout << "Is it raining? Please type 'yes' or 'no' " << endl;
cin >> rain;
if (0 < day && day < 3) {
if (rain == "yes") {
cout << "Read in bed" << endl;
} else {
cout << "Go out and play!" << endl;
}
} else {
if (rain == "yes")
cout << "Take an umbrella!" << endl;
else
cout << "No umberella needed" << endl;
}
}
我正在尝试将 if
语句用于多个比较操作,但 day
变量在我的 if
语句中不起作用。
这是我的代码:
int day;
string rain;
cout << "What day of the week is it?" << endl;
cin >> day;
while (0 < day < 8)
{
cout << "Is it raining? Please type 'yes' or 'no' " << endl;
cin >> rain;
if ((0 < day < 3) && (rain == "yes"))
cout << "Read in bed" << endl;
else if ((0 < day < 3) && (rain == "no"))
cout << "Go out and play!" << endl;
else if ((2 < day < 8) && (rain == "yes"))
cout << "Take an umbrella!" << endl;
else
cout << "No umberella needed" << endl;
cout << "What day of the week is it?" << endl;
cin >> day;
}
cout << "Invalid day sorry" << endl;
获得 Read in bed
或 go out and play
,但从未获得 Take an umbrella
。
如果我输入 day = 9
,我的代码也可以工作。
这与 if 语句和多个变量无关,您的 0 < day < 3
实际上应该读作 0 < day && day < 3
。顺便说一句,你不需要在同一个 if 语句的每个分支中测试它,它不太可能改变。
这不是 C++ 的工作方式:
0 < day < 3
你必须改变它
day > 0 && day < 3
您需要使用逻辑 AND (&&
) 运算符更正涉及 day
变量的条件。
例如,0 < day < 8
表示您正在针对两个不同的值测试 day
,即 day
是否在此范围内。因此,在您的情况下,应使用逻辑运算符和 &&
组合这两个比较。因此,应该是这样的:
day > 0 && day < 8
您比较 day
的其他条件也是如此。
有关逻辑运算符的更多详细信息,请参阅参考资料: https://en.cppreference.com/w/cpp/language/operator_logical
使用7 < day && day < 0
一旦你写 0 < day < 3
C++ 计算其中之一然后比较变成 boolean < integer
我觉得您的代码有更好的方法:我可以到达所有端点
while (true) {
cout << "What day of the week is it?" << endl;
cin >> day;
if (7 < day && day < 0 ){
cout << "Invalid day sorry" << endl;
break;
}
cout << "Is it raining? Please type 'yes' or 'no' " << endl;
cin >> rain;
if (0 < day && day < 3) {
if (rain == "yes") {
cout << "Read in bed" << endl;
} else {
cout << "Go out and play!" << endl;
}
} else {
if (rain == "yes")
cout << "Take an umbrella!" << endl;
else
cout << "No umberella needed" << endl;
}
}