C++ 虽然语句不适用于字符串和"or"

C++ While statement not working with string and "or"

本文关键字:字符串 适用于 or 不适用 语句 C++      更新时间:2023-10-16

我是C++新手,通过YouTube和我买的一些书自学。我一辈子都无法弄清楚为什么第二个 while 语句不起作用。从数学的角度来看,我觉得它应该有效。如果月份不是 = 六月或七月,则执行 if else 语句。但即使我运行正确答案,它也总是运行如果不是其他答案。我觉得它与它是一个字符串有关,所以我在没有 or "||" 的情况下对其进行了测试,它工作了。所以也许它与组合字符串和/或语句有关。关于将这些一起使用的研究也是如此,但找不到太多。感谢您的帮助。

int main()
{
int year;
int day = 0;
string month = "x";
do
{
if (day == 0)
{
cout << "hello" << endl;
cout << "Please Enter your B-Day as Day, Month, Year" << endl;
cout << "day" << endl;
cin >> day;
}
else
{
cout << "Please enter a correct day" << endl;
cin >> day;
}
} while (day > 31 || day < 1);
do
{
if (month == "x")
{
cout << "Please enter the month you were born" << endl;
cin >> month;
}
else
{
cout << "Please Enter a correct Month." << endl;
cin >> month;
}
}
**while (month != "june" || month != "july");**

return 0;
}

如果你这样做:

while (month != "june" && month != "july");

或者,

while (!(month == "june" || month == "july"));

而不是:

while (month != "june" || month != "july");

即使使用多个逻辑 OR,您的程序也将正常工作。

while (month != "june" || month != "july");

C++有一种叫做短路求值的东西,在这种情况下,如果第一个操作数返回 true,它将不会评估||权。同样对于&&,如果第一个为假,它不会计算右操作数。因此,请确保您希望逻辑如何运行并编写代码。