我对我在 C 语言类(class)中偶然发现的这个例子感到很奇怪,通常每次 c 碰巧是一个数字时它应该递增 nb_chiffres (这就像一个循环,每次我们放入 c = getchar();
)并且否则则增加 nb_non_chiffres。
我的问题是案例不以“;”结尾它们也不以“break”结尾;所以我认为案例“1”包含在案例“2”中,案例“3”包含在“2”中,等等。
我没有看到该程序按预期运行。我知道 case '0' 是否不是 true
它将执行以下所有情况,除了 default
但为什么我的老师不加“;”在案件的最后?这是代码
switch(c){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
nb_chiffres++;
break;
default:
nb_non_chiffres++;
}
最佳答案
编辑:当我说这是合法的 C 代码时,我的意思是没有分号并打破了 case 语句。除此之外,还有一些格式问题会导致注释中提到的编译错误。
这实际上是合法的C代码,这种用类C语言编写Switch语句的方式甚至有一个名字:fallthrough。
您共享的代码做了两件事:
- 首先,cases 被留空,没有对应的语句,所以前面没有分号。
- 其次,除非遇到中断,否则所有这些情况下都没有中断将导致控制基本上循环所有情况直至默认。
看看this question .
关于C语言: Switch cases weird example not ending with ";" nor "break",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54755131/