C语言:切换案例奇怪的例子不以“;”结尾,也不是“破解”[重复]

问题描述 投票:-2回答:1

这个问题在这里已有答案:

我已经被这个例子弄得一团糟,我在我的C语言课程中偶然发现,通常它应该是每次c恰好是一个数字递增nb_chiffres(它就像一个循环,每当我们放c = getchar();)并增加nb_non_chiffres否则。

我的问题是案件不以“;”结尾也不是以“休息”结束所以我看到它好像情况'1'包含在案例'2'中,案例'3'包含在'2'等等中。我没有看到程序按预期工作。我知道如果情况'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 switch-statement case break
1个回答
0
投票

编辑:当我说这是合法的C代码时,我的意思是没有分号和违反案例陈述。除此之外,还有一些格式问题会导致编译错误,如评论中所述。

这实际上是合法的C代码,这种用C语言编写Switch语句的方式甚至有一个名称:fallthrough。

你分享的代码做了两件事:

  1. 首先,案例是空的,并且它们没有与它们对应的声明,因此它们前面没有分号。
  2. 其次,在所有这些情况下没有中断将导致控制基本上在所有情况下循环到默认值,除非遇到中断。

看看this question

© www.soinside.com 2019 - 2024. All rights reserved.