一道C语言题目,帮忙分析结果

程序如下
main()
{
int a=1,b=2,c=3,d=4,e=5;
if(a<b)
if(b=3)
if(!c)
e=1;
else
if(d)
e=2;
e=3;
printf("%d\n",e);
}

答案是3吗?
请详细分析执行步骤,谢谢!
我刚才上机试了试,其实无论前面条件如何,最后e的值都是3,我主要是被最后两个赋值语句给搞晕了,不知道该啥时候执行,
其实它就是在最后执行就好,e=3属於第一个if。

是等于3,一楼的朋友 这个if没有括号就是为了迷惑看题的人,有了括号这个题就没什么意义了.再一个!c这个东西有,你看看书,是非的意识.还有if(d),d=4,也就是正数,再这里if(d)就等于if(true).没别的意识,就是解释一下.
这个题是等于3
main()
{
int a=1,b=2,c=3,d=4,e=5;
if(a<b)
if(b=3)
if(!c) //到这一步,c=3 !c=0;if语句不执行,if(0)当然不执行了.
e=1; //这个不执行
else //else找与它最近的if;
if(d) //d=4,if(d)也就是if(true)所以 if语句执行.
e=2; //先把2赋值给e
e=3; //再把3赋值给e
printf("%d\n",e); //最后e=3,输出.
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-08-13
main()
{
int a=1,b=2,c=3,d=4,e=5;
if(a<b)
if(b=3)
if(!c) //如果C=0时执行
e=1;
else
if(d) //如果D不等于0时执行
e=3;
printf("%d\n",e);
}
第2个回答  2007-08-13
main()
{
int a=1,b=2,c=3,d=4,e=5;
if(a<b)
if(b=3)
if(!c) //!c 这个是什么意思 好象没见过
e=1;
else
if(d) //d就一个,不知道要干什么
e=2;
e=3;
printf("%d\n",e);
}
还有那么多 if最好括号弄一下 不然别说别人呢,自己都看花了
第3个回答  2007-08-13
e是等于3,听我慢慢给你讲啊~~~~~~~~~~
main()
{
int a=1,b=2,c=3,d=4,e=5;
if(a<b) //a小于b,向下执行
if(b=3) //将3的值赋予b,3为真,所以程序向下执行
if(!c) //!c 即使其值为0
e=1; //此句不执行
else
if(d) //d=4 为真
e=2; //将2赋予e
e=3; //将3赋予e
printf("%d\n",e); //输出结果为3
}

看,很清楚了吧~~~~~~~
第4个回答  2007-08-13
main()
{
int a=1,b=2,c=3,d=4,e=5;
if(a<b)
{ if(b=3)//这里应该是==
{
if(!c)
{
e=1;
}else
{
if(d)
{
e=2;
}
e=3;
}
}
}
printf("%d\n",e);
}
如果按你给出的程序看,结果应该是b、e都等于3。
第5个回答  2007-08-13
if(!c)为假所以执行else里的语句最后e被赋值为3
相似回答