可以在开关盒中使用OR运算符吗?我试图从用户输入检查中删除区分大小写(因此可能会有更好的方法完全做到这一点,毕竟我是一个初学者),这当然导致开关大小写加倍(不包括默认大小写) )。此时最好使用if / else,还是有办法检查案件中的不同情况?
我的代码,如果有帮助的话:
case 'Y':
case 'y':
cout << "Good, we will check later to ensure your opinion is unchanged." << endl;
break;
case 'N':
case 'n':
cout << "Open your window tonight, unlock the door, take sleep medication, and ignore any noises in your room." << endl;
break;
default:
cout << "Not an answer... think you can play games with me? I'll give you worse than the lemon haters, you'll be better off killing yourself before I take matters into my own hands." << endl;
如果您不打算区分字母是小写还是大写,那么最好的解决方案是将switch变量“转换”为小写/大写。这样一来,您就可以摆脱不必要的情况,并在以后实施新情况时节省一些时间。
根据您的决定,您可以选择std::tolower
或std::toupper
:
switch (std::tolower(x)) {
case 'y':
std::cout << "answer1" << std::endl;
break;
case 'n':
std::cout << "answer2" << std::endl;
break;
default:
std::cout << "answer3" << std::endl;
break;
}
回答有关OR语句用法的问题-不适用于char
。所有字符都用一些整数(ASCII表中的值)定义,这意味着例如y
具有值121
,而Y
具有89
。
让我们看一下表达式case 'y' || 'Y'
:从返回的值'y' || 'Y'
实际上是1
。那怎么可能?1
如果至少有一个参数不是0
,0
否则返回OR语句。值的计算方法如下:
case 'y' || 'Y' => case 121 || 89 => case 1
可悲的是,两者都y
没有Y
定义为1
ASCII,因此switch将default
对该输入使用大小写。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句