对两个案例标签使用相同的值与对单个案例使用多个案例标签有什么区别?
what is the difference between using the same value for two case labels and using several case labels for a single case?
我正在用C++阅读Bjarne的编程和原则。
我遇到了有关交换机的以下详细信息:
您可以对单个案例使用多个案例标签。
不能对两个事例标签使用相同的值。
我想我清楚地理解了 2. 一。它应该意味着:
switch (a) {
case 'c':{//some code}
case 'c':{//some (different) code}
}
是不合法的。
但是,我不确定第一个是否意味着,如果案例 1 和案例 2 等不同,那么我可以有任意数量的案例(当然它们是常量表达式(,或者这意味着我可以有任意数量的案例,但其中一些做同样的事情。
我发现了一个类似的问题: C 开关外壳中的多个标签值
我解释对吗?如果没有,我错过了什么或出错了什么?
这是允许的:
switch ( expression )
{
case 1:
case 2:
case 3:
//some code
break;
//...
}
这是不允许的:
switch ( expression )
{
case 1:
//some code
break;
case 1:
//some other code
break;
//...
}
似乎他的意思是以下结构
switch ( expression )
{
case 1: case 2: case 3:
//some code
break;
//...
}
您可以对单个案例使用多个案例标签。
这只是意味着在任何情况下,您都可以使用尽可能多的标签。
例如
switch(choice) {
// This is valid
case 1:
case 2:
.
.
case n:
printf("nCase 1 and 2");
break;
}
您可能想知道为同一案例使用多个标签有什么用?
考虑一个询问用户他/她对主题的成绩的示例。用户可以输入A级的A
或a
等级,B级的B
或b
等。但是您希望处理忽略用户输入是大写还是小的情况。您可以这样做:
char choice;
printf("Enter your grades : ");
scanf("%d", &choice);
switch(choice) {
case 'A':
case 'a':
printf("Excellent");
break;
case 'B':
case 'b':
printf("Good");
break;
.
.
case 'E':
case 'e':
printf("You failed");
break;
default:
printf("Invalid grades");
}
我认为这是一种措辞不佳的方式,可以说您可以在单个语句上有多个标签(实际上是案例标签或常规标签(,或者换句话说,您可以使用隐式的跌倒。
例:
bool a_or_b_eh(char Ch)
{
switch(Ch){ //return true; is a single statement so the {} are optional here
case 'a': case 'b': case 'A': case 'B': return true;
}
return false;
}
相关文章:
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 为什么这个案例陈述需要一个"if else"而不仅仅是一个"if"?
- 如何正确指定 goto 语句的标签?
- 使用g++静态初始化带有命名标签的嵌套C++结构
- 通过水平滚动条更改标签
- C++ switch 语句:对案例进行分组,并针对每个案例给出特定的说明
- 任意大小的 constexpr 数组是否可以用作 switch 语句中的案例?
- 从 QFontDatabase 设置 QFont 将所有标签设置为等宽字体?Qt C++
- 在C++中存储要输入的标签列表
- 如何在等效列表中查找最小的连接标签
- 标签检测鼠标单击 c++
- Python & C-C++ 扩展模块案例段故障
- 无法将行编辑中的文本打印到 Qt C++ 中的标签
- 如何根据C++中的标签运行特定函数?
- C++ Expat 仅打印元素的第一个字母和标签中的数据
- 案例标签值已出现错误
- 对两个案例标签使用相同的值与对单个案例使用多个案例标签有什么区别?
- 没有默认标签的开关案例中的无效值
- 错误:跳转到案例标签并交叉初始化
- 在 if. 中嵌入案例标签.否则声明