C# 我们为什么使用';:';而不是'';案例控制指令?
我需要知道为什么我们在c编程中对关键字C# 我们为什么使用';:';而不是'';案例控制指令?,c#,c,switch-statement,case-statement,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; 请帮帮我从英语写作的角度来看,冒号更有意义,这使代码更易于阅读 把它想象成告诉计算机以下内容: In case the number is 1, you should
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章
案例
或默认
标签只能出现在开关语句中
因此,案例
是一个带标签的语句
标签语句的规定格式如下所示:
关于
:
的选择,这是关于,其中:
用于标识指定的语句块。为什么大小写
行不应以分号结尾
在基于C的语言中,分号有一个特定的函数作为“语句终止符”。这意味着分号表示特定代码语句的结束,以及另一个代码语句的开始。有关此项的更多信息,请参阅
因此,如果在每行case
后都有一个分号,编译器会将它们解释为单独的语句。这就像是在写:
do case 1;
do this;
do case 2;
do this;
编译器将这些代码视为单独的“正常”代码行。然后它可能无法编译,因为case
关键字被专门保留,仅用于switch
语句中
至于为什么选择
:
字符是为了这个特殊目的:正如Luca_65所提到的,这个案例隐藏了一个goto
标签语句。冒号在C to中使用,这种语法一直沿用到它的派生语言
正如博比·斯皮尔斯所说,这个字符最初可能是由于冒号在英语语法中的相似含义而被选择的。因为
case
s是标签,这是标签的语法。为什么中的case-in开关为什么不在if
和else
条件中呢?因为这不是一条指令。早期的代码是用古腾堡风格排版的印刷机。程序员的不断用完代码>符号,所以他们决定切换到:
来处理case语句,这样他们就可以编写更长的程序了。@BJMyers不确定。我听说这只是里奇在记录语言时的一个打字错误。
do case 1;
do this;
do case 2;
do this;