一道关于c语言switch语句的题

题目:若a,b均为正整形变量,则哪个switch语句是正确的


switch(a+b)
{ case10 : x=a+b;break;
  case11 : y=a-b;break;
}
switch(a+b)
{ case1 : case3 : y=a+b;break;
  case0 : case5 : y=a-b;
}

第一个答案书上说是错误的,但是我没看出来哪有语法错误,难道是因为从case10开始的所以是错的吗,感觉这样的话是不是太牵强

看着没啥大问题,书上完整截图看看

上面两段代码,看不出有什么问题。

我帮你用编译器亲自实验过啦,都是没有问题的。switch的格式是这样的:

switch(---)
{
    case --:要执行的内容1:break;
    case --:要执行的内容2:break;
    还可以有更多的case,几个随你
    default :否则执行的内容,即都不满足上面条件:break; 
}

都是对的,也许是书上的问题。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7684148
  • 除此之外, 这篇博客: 华为C语言编程规范重点笔记(学习C编程规范看这篇就够了)中的 规则8.6 对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处 理,必须在该case语句处理完、下一个case语句前加上明确的注释。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 说明:这样比较清楚程序编写者的意图,有效防止无故遗漏break语句。
    

case后没有空格