为什么我们使用 ':' 而不是 '; '在案例控制指令中?
Why we are using ' : ' instead of ' ; ' in case control instruction?
我想知道为什么我们在 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;
请帮帮我
从英文写作的角度来看,冒号更有意义,这使代码更易于阅读。
把它想象成告诉计算机以下内容:
In case the number is 1, you should do these things:
Thing 1;
Thing 2;
Thing 3;
C 开关隐藏转到等于被测值的标签。
引用 C11
,章节 §6.8.1
A case
or default
label shall appear only in a switch statement.
所以,case
是一个 标签语句。
标签语句的规定格式由
给出
labeled-statement:
identifier : statement
case constant-expression : statement
default : statement
关于:
的选择,这是关于assembly syntax,其中:
用于标识指定语句块。
为什么 case
行不应该以分号结尾
在基于 C 的语言中,分号具有与 'statement terminator' 相同的特定功能。这意味着分号标志着一个特定代码语句的结束,以及另一个代码语句的开始。有关这方面的更多信息,请参阅 this quora post。
因此,如果在每个 case
行之后都有一个分号,编译器会将它们全部解释为单独的、单独的语句。就像写:
do case 1;
do this;
do case 2;
do this;
编译器将这些视为单独的 'normal' 行代码。然后它可能会编译失败,因为 case
关键字专门保留仅供在 switch
语句中使用。
至于为什么选择 :
字符用于此特定目的:正如 Luca_65 提到的,该案例隐藏了 goto
标签声明。冒号在 C 中被使用到 label a section of code,这种语法一直沿袭到它的派生语言。
正如 Bobby Speirs 指出的那样,最初选择该字符可能是因为冒号在英语语法中的含义相似。
我想知道为什么我们在 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;
请帮帮我
从英文写作的角度来看,冒号更有意义,这使代码更易于阅读。
把它想象成告诉计算机以下内容:
In case the number is 1, you should do these things:
Thing 1;
Thing 2;
Thing 3;
C 开关隐藏转到等于被测值的标签。
引用 C11
,章节 §6.8.1
A
case
ordefault
label shall appear only in a switch statement.
所以,case
是一个 标签语句。
标签语句的规定格式由
给出labeled-statement: identifier : statement case constant-expression : statement default : statement
关于:
的选择,这是关于assembly syntax,其中:
用于标识指定语句块。
为什么 case
行不应该以分号结尾
在基于 C 的语言中,分号具有与 'statement terminator' 相同的特定功能。这意味着分号标志着一个特定代码语句的结束,以及另一个代码语句的开始。有关这方面的更多信息,请参阅 this quora post。
因此,如果在每个 case
行之后都有一个分号,编译器会将它们全部解释为单独的、单独的语句。就像写:
do case 1;
do this;
do case 2;
do this;
编译器将这些视为单独的 'normal' 行代码。然后它可能会编译失败,因为 case
关键字专门保留仅供在 switch
语句中使用。
至于为什么选择 :
字符用于此特定目的:正如 Luca_65 提到的,该案例隐藏了 goto
标签声明。冒号在 C 中被使用到 label a section of code,这种语法一直沿袭到它的派生语言。
正如 Bobby Speirs 指出的那样,最初选择该字符可能是因为冒号在英语语法中的含义相似。