我们为什么要使用' :'而不是' ; '以防控制指令?

时间:2017-06-03 04:53:32

标签: c# c switch-statement case-statement

我需要知道为什么我们在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;
请帮助我

4 个答案:

答案 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

  

casedefault标签只会出现在switch语句中。

因此,case标记语句

标签声明的规定格式由

给出
labeled-statement:
identifier : statement
case constant-expression : statement
default : statement

关于:选择,这与assembly syntax有关,其中:用于标识指定的语句块。< / p>