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

来源:百度知道 编辑:UC知道 时间:2024/06/04 20:54:53
#include<stdio.h>
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++不应该出现了

会出现的
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
可以改成:
#include<stdio.h>
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;
}
break; /*这里加break;*/
case 2:
printf("++2++\n");break;
}
}

break;只能跳出当前的switch,所以只跳出了switch(b),而switch(a)的case 1里面没有自己的break;,所以case 2仍被执行

答案应该是 ** a=1,b=0 **
++2++
输出++2++我认为应该是判断的时候case 2也为真,在执行完case 1后输出了++2++的值

++2++ 在printf内是以字符串形式输出的,不做计算,直接输出