C++ 虽然语句不适用于字符串和"or"
C++ While statement not working with string and "or"
我是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,它将不会评估||
权。同样对于&&
,如果第一个为假,它不会计算右操作数。因此,请确保您希望逻辑如何运行并编写代码。
相关文章:
- FLTK 2.0构建和演示,适用于VS2019的2011年左右的代码库
- C++17 - 使用自定义分配器的节点提取/重新插入 - 适用于 clang++/libc++,但不适用于 libstd
- "string.h"在构建适用于iOS的qt应用程序中找不到消息
- 组合字符串不适用于 libCurl,C++
- 适用于 WebView2 旧版本的示例应用程序
- 重载 std::字符串运算符+ 用于打印枚举名称
- 在 NVIDIA GEFORCE GTX 1050 上下载适用于 Windows 10 的 openCL 1.2
- __attribute__(优化(0))) 是否适用于"recursively"?
- 为什么 std::erase(std::erase_if) 不是适用于<algorithm>任何容器的模板?
- 使用一个参数的模板函数时出错(适用于 2)
- 使用 适用于 Android 和 iOS 的 tf-lite C++ API
- 为什么这适用于 G++ 而不是 CLANG?
- 适用于 macOS 的 Xcode 应用程序。这就是我设置从USB麦克风输入获取音频的方式。一年前工作,现在没有了。为什么
- 适用于 Linux 的 c++ 上的代理脚本
- 为什么我的 SFINAE 表达式不再适用于 GCC 8.2?
- 将wchar_t字符串从/传递到本机插件-仅适用于Windows
- C++11 正则表达式是否适用于 UTF-8 字符串
- 如何在 c++ 中将十六进制整数转换为字符串(适用于 html 颜色)
- 不在异常中嵌入std::字符串的规则是否仍然适用于move构造函数
- c++字符串操作,适用于iOS和Android平台