我有以下代码(取自C书):
#include<stdio.h>
int main( )
{
int k=4,j=0;
switch(k)
{
case 3:
j=300;
case 4:
j=400;
case 5:
j=500;
}
printf("%d",j);
}
当我运行上面的代码时,我得到500
的输出,但我希望它是400
,任何人都可以打印500
而不是400
}?
(我是C的新手,我无法弄清楚它中的错误!)
答案 0 :(得分:5)
您需要在个案块结尾处break;
。
#include <stdio.h>
int main()
{
int k = 4, j = 0;
switch(k)
{
case 3:
j = 300;
break;
case 4:
j = 400;
break;
case 5:
j=500;
break;
}
printf("%d\n", j);
}
答案 1 :(得分:5)
你需要打破你的案件,否则它将贯穿其他案件:
int main( )
{
int k=4,j=0;
switch(k)
{
case 3:
j=300;
break;
case 4:
j=400;
break;
case 5:
j=500;
break;
}
printf("%d",j);
}
所以在你的情况下,它确实执行了j=400
,然后转到case 5
:并执行j=500
答案 2 :(得分:3)
在案例4之后没有中断声明,因此执行“落到”案例5中。