C语言这段程序如何解释

来源:百度知道 编辑:UC知道 时间:2024/05/29 17:49:29
#include<stdio.h>
void main()
{
int i;
for(i=1;i<=7;i++)
switch(i)
{
case 1:printf("i=1\n");break;
case 2:i=1;
case 3:printf("i=3\n");i+=2;break;
case 4:printf("i=%\d\n",i++);break;
}
}

结果是
i=1
i=3
i=4

#include<stdio.h>
void main()
{
int i;
for(i=1;i<=7;i++)
switch(i)
{
case 1:printf("i=1\n");break;
case 2:i=1;
case 3:printf("i=3\n");i+=2;break;
case 4:printf("i=%\d\n",i++);break;
}
}
分析
i=1 switch(1) case1 所以输出i=1 退出switch
i=2 执行i=1; 又因为case 2没有break; 所以程序继续向下执行case 3
case 3 输出i=3 输出后再执行i+=2即i=i+2=1+2=3 退出switch
应为i=3 所以在执行for中的i++后 i=4
所以i=4时 case 4 输出i=4 输出后再执行i++(这个是先运算再加1,区分++i它们先后正好相反)执行了i++后 i=5
再执行for中的i++ 所以i=6 没有对应的case
i++ i=7 也没有对应的case
综上分析可知在运行的过程中结果输出为

i=1
i=3
i=4

只要注意case 2没写break,会连带执行case 3的语句就OK了