分析一下程序

来源:百度知道 编辑:UC知道 时间:2024/05/04 14:27:16
main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 0:printf("%d",i);
case 2:printf("%d",i);
default:printf("%d",i);

}
}

为什么运行后是000122

首先for循环你应该看的懂吧。

一开始i=0,switch之后,就从case 0:开始往下执行,一共调用三次printf,所以输出3个0(i的当前值为0)。
之后i=1,switch之后,就从default:开始执行,因为一条语句,所以输出1个1(i的当前值为1)
之后i=2,switch之后,就从case 2:开始执行,一共调用二次printf,所以输出2个2(i的当前值为2)
之后退出循环

至于要执行完一条case语句后不执行后面的case或者default,那就要像楼上说的那样,在case语句最后加个break;

正常来说你的case 后面要加一个break;表达式,不然case中的printf语句会直接热行,switch中的case只是一个起标作用的符号.

main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 0:printf("%d",i); break;
case 2:printf("%d",i); break;
default:printf("%d",i); break;

}
}

运行后得012