深圳第十人民医院电话:c语言的一个问题,急救啊

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 05:10:39
x=0; y=2; z=3;

switch(x)
{ case 0 : switch(y==2)
{case 1 : printf("*"); break;
case 2 : printf("%"); break;
}
case 1 : switch(z)
{ case 1 : printf("$");
case 2 : printf("*"); break;
default : printf("#");
}
}

请详细解答为什么运行结果是 *#
谢谢

执行步骤如下:
switch(x) //此时判断x,进入case 0
{ case 0 : switch(y==2) //此时先计算y==2,得到1,进入case 1
{case 1 : printf("*"); break; //输出*,结束switch(y==2)
case 2 : printf("%"); break;
} //这里没有break,因此继续执行
case 1 : switch(z) //这里判断z,不是1也不是2,进入default
{ case 1 : printf("$");
case 2 : printf("*"); break;
default : printf("#"); //输出#
}
}

因为
switch(x) x=0
所以选case 0 : switch(y==2)

y==2是真的 C语言里面 真值为1
所以选case 1 : printf("*");
因为后面有break所以跳出case 2 : printf("%"); break; 不能运行

继续运行case 1 : switch(z)
z=3 所以
case 1 : printf("$");
case 2 : printf("*"); break;
都不能运行

因为没有3选其他(default)
default : printf("#");

所以是*#