我需要知道为什么我们在c编程中对关键字case
使用冒号而不是分号?
/*valid statement*/
case 1:
do this;
case 2:
do this;
/*why is invalid to write */
case 1;
do this;
case 2;
do this;
请帮助我
答案 0 :(得分:1)
为什么case
行不应以分号结尾
在基于C语言中,分号具有作为“语句终止符”的特定功能。这意味着分号标记特定代码语句的结束,以及另一个代码的开头。有关详细信息,请参阅this quora post。
因此,如果在每个case
行之后有分号,编译器会将它们全部解释为单独的单个语句。这就像写作:
do case 1;
do this;
do case 2;
do this;
编译器将这些视为单独的“正常”代码行。然后它可能无法编译,因为case
关键字专门保留仅用于switch
语句中。
为什么为此特定目的选择了:
字符:正如Luca_65所提到的那样,该案例隐藏了goto
标签语句。分号在C中用于label a section of code,这种语法贯穿其衍生语言。
正如Bobby Speirs所说,由于冒号在英语语法中具有相似的含义,因此最初可能选择了这个角色。
答案 1 :(得分:0)
从英文写作的角度来看,冒号更有意义,这使得代码更容易阅读。
把它想象成告诉计算机:
In case the number is 1, you should do these things:
Thing 1;
Thing 2;
Thing 3;
答案 2 :(得分:0)
C开关将goto隐藏到等于测试值的标签。
答案 3 :(得分:0)
引用C11
,章节§6.8.1
case
或default
标签只会出现在switch语句中。
因此,case
是标记语句。
标签声明的规定格式由
给出labeled-statement: identifier : statement case constant-expression : statement default : statement
关于:
的选择,这与assembly syntax有关,其中:
用于标识指定的语句块。< / p>