我是一个新手,所以试着从新手的角度来理解程序,希望这样“笨拙”的思路对同样是新手的人有所帮助,愿大家共同进步。如果理解有误,希望高手给与指正。谢谢大家!~
#include<stdio.h>
int 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);
}
}
如果不加 break,每次switch中会从第一个满足条件的语句执行到它后面的每一条printf语句,而不去管case的条件是否满足了。所以上面程序输出的会是000122.具体解释如下:i=0时,第一个满足条件的语句是case 0: printf("%d",i); ,并且case 2: printf("%d",i);
default:printf("%d",i);也会由于没break而顺序执行。i值为0,故输出000. 当在进入for循环时,i值自增为1,switch中第一条满足条件的是只有default:printf("%d",i);所以输出一个1。当再次进入for循环,i自增为2,第一个满足条件的语句是case 2: printf("%d",i);
并且default:printf("%d",i);也会由于没break而顺序执行。所以这两句执行结果是输出22,最后结果为000122.
#include<stdio.h>
int 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,当第一次执行for循环时,i=0,进入switch中,case 0满足条件,执行printf("%d",i);输出0,再执行break;退出switch,不再执行下面两句。当for执行i=1时,case 0,case 2都不满足条件,只有执行最后一句 default:printf("%d",i); 输出1,由于执行的是switch中的最后一句,执行完自行退出switch。再次执行for循环,i自增到2,进入switch中,case 2满足条件,执行printf("%d",i);输出2,再执行break;退出switch,不再执行下面一句,退出switch,i自增到3时,退出for循环。程序至此输出结果 0 1 2 。
#include<stdio.h>
int 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);
}
}
如果不加 break,每次switch中会从第一个满足条件的语句执行到它后面的每一条printf语句,而不去管case的条件是否满足了。所以上面程序输出的会是000122.具体解释如下:i=0时,第一个满足条件的语句是case 0: printf("%d",i); ,并且case 2: printf("%d",i);
default:printf("%d",i);也会由于没break而顺序执行。i值为0,故输出000. 当在进入for循环时,i值自增为1,switch中第一条满足条件的是只有default:printf("%d",i);所以输出一个1。当再次进入for循环,i自增为2,第一个满足条件的语句是case 2: printf("%d",i);
并且default:printf("%d",i);也会由于没break而顺序执行。所以这两句执行结果是输出22,最后结果为000122.
#include<stdio.h>
int 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,当第一次执行for循环时,i=0,进入switch中,case 0满足条件,执行printf("%d",i);输出0,再执行break;退出switch,不再执行下面两句。当for执行i=1时,case 0,case 2都不满足条件,只有执行最后一句 default:printf("%d",i); 输出1,由于执行的是switch中的最后一句,执行完自行退出switch。再次执行for循环,i自增到2,进入switch中,case 2满足条件,执行printf("%d",i);输出2,再执行break;退出switch,不再执行下面一句,退出switch,i自增到3时,退出for循环。程序至此输出结果 0 1 2 。