我帮助在大学教授计算机科学课程的介绍,我帮助的教授在学生面前给我测试,以确保我不认为这些问题太难或太混乱。他用以下代码给我一个问题:
#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++;
}
}
现在当我运行它时,我认为输出应该是10.但是,当运行时,它输出11.我在每个案例之后放置print语句,输出看起来像这样:
8
9
11
10
11
11
所以我的问题是,有人可以解释一下吗?我觉得这是一件简单的事情,但我无法理解我的生活。
答案 0 :(得分:7)
switch
从case 5
开始,直至结束时(因为缺少break
- 关键字)。所以:5 + 3 + 1 + 2 - 1 + 1 = 11
答案 1 :(得分:2)
在C编程语言中,并非每个案例都包含一个中断。如果没有出现中断,则控制流将逐渐落到案例中,直到达到中断为止。
因此,如果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。