怪异的if语句行为
Weird if Statement Behaviour
当以下代码到达cin语句时:如果我输入-1,它仍然运行在最后一个else-If部分中找到的invalidSelectorError()。。。即使在mainMenuSelector等于-1的情况下应该传递该部分。
为什么??
(顺便说一句,invalidSelectorError()运行后,封装所有内容的while循环正常工作,程序按预期终止。)
int mainMenuSelector;
while(mainMenuSelector != -1){
cout << "--- MAIN MENU -----------------" << endl;
cout << "[1] Create New Contact" << endl;
cout << "[2] View Existing Contacts" << endl;
cout << "[3] View or Edit Data Fields" << endl;
cout << "-------------------------------" << endl;
cout << "Or just press ENTER to quit." << endl;
cout << "-------------------------------" << endl;
cout << "Selection: ";
mainMenuSelector = -1;
cin >> mainMenuSelector;
cin.ignore();
if(mainMenuSelector == 1){
contactCreator();
}else if(mainMenuSelector == 2){
contactViewer();
}else if(mainMenuSelector == 3){
dataFieldViewer();
}else if(mainMenuSelector != 1 ||
mainMenuSelector != 2 ||
mainMenuSelector != 3 ||
mainMenuSelector != -1
){
invalidSelectorError();
}
}
return 0;
您应该使用&&
而不是||
:
if(mainMenuSelector != 1 &&
mainMenuSelector != 2 &&
mainMenuSelector != 3 &&
mainMenuSelector != -1
){
这是因为在这一部分:
else if(mainMenuSelector != 1 ||
mainMenuSelector != 2 ||
mainMenuSelector != 3 ||
mainMenuSelector != -1
){
invalidSelectorError();
您正在使用||。因此,只要这四个由||分隔的语句中有一个为真(出于显而易见的原因,这种情况将一直存在),那么您的代码就会进入"if"之后的代码块
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- Insert函数不适用于2 if语句C++
- If语句未被求值C++
- C++嵌套if语句,基本货币交换
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 是否可以使用if constexpr删除控制流语句
- 我似乎对if/else的基本语句有问题:/
- If语句在c++中被忽略
- 比较if语句中的数组值和int值
- 以在Qt中的IF语句中设置时间延迟
- Craps游戏问题,忽略if语句
- c++:定义if语句中的模板
- C++嵌套的 If 语句中,它无法按预期工作
- 如果中的多个语句是否与多个 if 相同?
- C++ If/Else 语句被跳过
- 使用语句if时逻辑的问题
- 如何添加语句if-else
- 如何将语句if(isalpha(c))从c++转换为MIPS ?
- 在if语句if C++中创建对象时出现作用域问题
- if语句-if/else和参数放置C++