案例"p"的问题 ||"P":C++ switch 语句中的语法
Problems with case 'p' || 'P': syntax within a switch statement in C++
我以下列方式使用了switch语句:
switch (ch){
case 'P' || 'p':
goto balance;
break;
case 'r' || 'R':
goto menu;
break;
default:
cout<<"ttInvalid Choice!!"<<endl;
system ("ttpause");
system ("cls");
goto menu;
break;
}
但以下语法似乎有问题:
case 'r' || 'R'
编译器抱怨"重复大小写值"。我的代码有什么问题?
将其更改为
case 'P':
case 'p':
goto balance;
break;
使用goto
通常不是一个好主意。
在原始代码中,case 'P' || 'p':
等效于 case 1
,因为如果两个操作数都为零,则||
0
的结果,否则1
。因此,在两个case
语句中,'p' || 'P'
和'r' || 'R'
都评估为1
,这就是您收到有关重复案例值的警告的原因。
case 'P' || 'p':
...
本意是:
case 'P':
case 'p':
...
请注意,您可以使用另一种(在本例中更合理(方法:
switch ( std::tolower(ch) ) {
case 'p':
...
break;
case 'r':
...
break;
default:
...
}
你只需要#include <cctype>
||
是一个二元运算符; 'P' || 'p'
的计算结果为 true
,因为 ||
的左操作数不为零。'R' || 'r'
也是一样.所以case
语句都是case true:
的,这就是编译器抱怨的。分隔值:
case 'P':
case 'p':
menu(); // function call recommended instead of `goto`
break;
相关文章:
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 如何将 if else 语句重写为 switch 语句
- Switch 语句(字符串)一直选择默认值,除非其为零
- C++ switch 语句:对案例进行分组,并针对每个案例给出特定的说明
- 任意大小的 constexpr 数组是否可以用作 switch 语句中的案例?
- 默认标签显然在 switch 语句中不起作用
- C++如何在 switch 语句中放置两个参数
- 如何在 c++ 中从 switch 语句返回不同类型的变量
- 在编译时自动生成用于稀疏数组索引的switch语句
- C++ Switch 语句中的数学运算
- 变量不能在 lambda 中隐式捕获,并且没有使用 switch 语句指定捕获默认值
- 在任何案例之前,在 switch 语句中的使用声明是否合法?
- 使用 switch 语句将不同的函数作为类属性分配 C++
- 为什么我的 switch 语句没有响应一半的情况?
- 如何从映射中获取值并在 C++ 的 switch 语句中使用它
- switch 语句导致发送两条消息
- C++ Switch 语句在中断后执行
- switch语句,两种类似情况不同
- switch 语句和对象隐式 int 转换
- switch 语句结束和下一条语句之间的时间是否具有确定性(与路径无关)