C语言这段程序如何解释?

[复制链接]
查看11 | 回复3 | 2009-7-13 16:32:19 | 显示全部楼层 |阅读模式
#include
main ()
{
int a=1,b=0;
switch(a)
{
case 1:
switch(b)
{
case 0:
printf("** a=1,b=0 ** \n");break;
case 1:
printf("** a=1,b=1 ** \n");break;
}
case 2:
printf("++2++\n");break;
}
}
为什么结果是
** a=1,b=1 **
++2++
我的理解 ++2++不应该出现了

回复

使用道具 举报

千问 | 2009-7-13 16:32:19 | 显示全部楼层
会出现的case 1:switch(b){case 0: printf("** a=1,b=0 ** \n");break;case 1: printf("** a=1,b=1 ** \n");break;}因为你case 1:没有break;所以程序仍然会执行case 2 如果你不要执行case2可以改成:#includemain (){ int a=1,b=0; switch(a) { case 1:switch(b){case 0: printf("** a=1,b=0 ** \n");break;...
回复

使用道具 举报

千问 | 2009-7-13 16:32:19 | 显示全部楼层
break;只能跳出当前的switch,所以只跳出了switch(b),而switch(a)的case 1里面没有自己的break;,所以case 2仍被执行...
回复

使用道具 举报

千问 | 2009-7-13 16:32:19 | 显示全部楼层
答案应该是 ** a=1,b=0 **
++2++输出++2++我认为应该是判断的时候case 2也为真,在执行完case 1后输出了++2++的值...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行