C语言: Switch cases weird example not ending with ";" nor "break"

标签 c switch-statement case break

我对我在 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。

您共享的代码做了两件事:

  1. 首先,cases 被留空,没有对应的语句,所以前面没有分号。
  2. 其次,除非遇到中断,否则所有这些情况下都没有中断将导致控制基本上循环所有情况直至默认。

看看this question .

关于C语言: Switch cases weird example not ending with ";" nor "break",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54755131/

相关文章:

c - 无符号整数溢出不 "wrap around"

mysql - 根据购买次数对顾客进行分类,找出谁属于哪个范围?

mysql - 基于空值生成值的情况

c# - C#中switch语句的多个变量

case - Elixir:在 case 语句中使用变量

c - 指示 GDB 6.5 使用目标文件中嵌入的源代码

c - 使用 C 从 Windows 注册表读取

c - #define VAR {0}有什么特殊含义吗?

c - 在 C <stdio.h> 中使用 Switch-Case 语句时遇到问题

c++ - 用标签前写的一些代码切换,可以吗?