为什么这个程序的结果是这样 ( 积分: 50 )

  • 主题发起人 主题发起人 lekaihuai
  • 开始时间 开始时间
L

lekaihuai

Unregistered / Unconfirmed
GUEST, unregistred user!
#include<stdio.h>
main()
{
int a=1,b=7,c=5;
switch(a)
{
case 1:switch(b>0)
{
case 1:printf("@");break;
case 2:printf("!");break;
}
case 0:switch(c==5)
{
case 0:printf("*");break;
case 1:printf("#");break;
default:printf("$");break;
}
default:printf("&amp;");
}
printf("/n");
}
结果·# —
 
#include<stdio.h>
main()
{
int a=1,b=7,c=5;
switch(a)
{
case 1:switch(b>0)
{
case 1:printf("@");break;
case 2:printf("!");break;
}
case 0:switch(c==5)
{
case 0:printf("*");break;
case 1:printf("#");break;
default:printf("$");break;
}
default:printf("&amp;");
}
printf("/n");
}
结果·# —
 
#include<stdio.h>
main()
{
int a=1,b=7,c=5;
switch(a)
{
case 1:switch(b>0) /* a=1 所以执行以下语句*/
{
case 1:printf("@");break;/*因为 b=7 (b>0) 所以执行这条语句,输出 @*/
case 2:printf("!");break;
}
/*因为这里没有 break 所以继续执行以下语句*/
case 0:switch(c==5)
{
case 0:printf("*");break;
case 1:printf("#");break;/*因为 c=5 所以执行这条语句,输出 #*/
default:printf("$");break;
}
/*因为这里没有 break 所以继续执行以下语句*/
default:printf("&amp;");/*输出 &amp;*/
}
printf("/n");
}
结果应该是 @#&amp;
 
同意kaida的答案,
请问lekaihuai您为什么要这样写呢?有什么好处吗?不太习惯您的这种写法
 
同意kaida的答案
 
如果结果不一致会不会是转意符的原因啊
 
程序写成这样也只有你能做到了,佩服。呵呵;
不过我觉得kaida的分析不对,
你switch后面的是个条件语句,他的返回值是true(1),或者false(0),所以回执行,case:0或者case:1,(依switch后面的值而定)。
结果嘛:我觉得·#—
 
同意二楼的答案。。。
 
一定是某个无聊的老师出的考试题
正常的人是不会写成这个样子的。。。。
 
哈哈,看楼主给的结果也知道我的分析是对的!!!
 
后退
顶部