为什么这个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