我正在尝试将.png
语句用于多个比较操作,但是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
,我的代码也可以使用。
答案 0 :(得分:2)
您需要使用逻辑AND(day
)运算符来更正涉及&&
变量的条件。
例如,0 < day < 8
表示您正在针对两个不同的值测试day
,即day
是否在此范围内。因此,在您的情况下,应使用逻辑运算符和&&
组合这两个比较。因此,应该是这样的:
day > 0 && day < 8
在比较day
的其他条件下也是如此。
有关逻辑运算符的更多详细信息,请参见参考: https://en.cppreference.com/w/cpp/language/operator_logical
答案 1 :(得分:2)
使用7 < day && day < 0
一旦您写出0 < day < 3
,C ++就会对其中之一进行评估,然后比较结果就会变成布尔值<整数
我觉得您的代码有更好的方法:我可以遍及所有端点
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;
}
}
答案 2 :(得分:0)
这与if语句和多个变量无关,您的0 < day < 3
实际上应该读为0 < day && day < 3
。顺便说一句,您不需要在相同的if语句的每个分支中对其进行测试,因此不太可能更改。
答案 3 :(得分:0)
这不是C ++的工作方式:
0 < day < 3
您必须更改
day > 0 && day < 3