为什么这个switch语句的输出是11?

为什么这个switch语句的输出是11?,c,C,我在一所大学里帮助教授计算机科学导论课程,我帮助的教授在学生面前给我做测试,以确保我不认为这些问题太难或让人困惑。他给了我一个关于以下代码的问题: #include<stdio.h> #include<stdlib.h> int main(){ int x = 5; switch(x){ case 3: x += 1; case 4: x += 2; case 5: x += 3; case 6: x++; case 7

我在一所大学里帮助教授计算机科学导论课程,我帮助的教授在学生面前给我做测试,以确保我不认为这些问题太难或让人困惑。他给了我一个关于以下代码的问题:

#include<stdio.h>
#include<stdlib.h>

int main(){
  int x = 5;

  switch(x){
    case 3: x += 1;
    case 4: x += 2;
    case 5: x += 3;
    case 6: x++;
    case 7: x += 2;
    case 8: x--;
    case 9: x++;
  }
}

所以我的问题是,有人能解释一下吗?我觉得这是一件很简单的事情,但我一辈子都想不出来。

切换开关从案例5开始,一直到结束(因为缺少
break
-关键字)。因此:在C编程语言中,5+3+1+2-1+1=11

并不是每种情况都包含中断。如果没有出现中断,控制流将下降到案例,直到达到中断

因此,如果x以5开始

case 5: x += 3;  //5+3 = 8
case 6: x++;     //8+1 = 9
case 7: x += 2;  //9+2 = 11
case 8: x--;    //11-1 = 10
case 9: x++;    //10+1 = 11

结果是11。

我真不敢相信我错过了这个。非常感谢。
case 5: x += 3;  //5+3 = 8
case 6: x++;     //8+1 = 9
case 7: x += 2;  //9+2 = 11
case 8: x--;    //11-1 = 10
case 9: x++;    //10+1 = 11