C语言编程题,求答案。?

如题所述

首先,这种题要知道答案很简单,自己把题目放到编译软件上运行一下就行,然后可以通过结果反推过程。
这道题我编译出来结果是2,以下是我的逻辑:
首先,要知道else配对的是哪个if,这个配对方法很简单,由于没加括号,直接往上行找离它最近的没配对的if就行。本题与else配对的是第二个if;
其次,由于没有加括号,第一个if只能控制下一行的语句,即第二个if;第一个if无效,所以程序判定下一行的第二个if无效,而再往下一行的语句又受第二个if控制,所以它受到连锁反应,间接被无效了。下面的else与第二个if配对,第二个if无效就是else配对对象无效,else自然就跟着无效了。那么c=2就没有受到任何改变,原样输出。
这道题,虽然没有加括号括住下面的内容,但是最后因为if的性质,产生了连环无效,实际上与加了括号的效果一样
这里引起迷惑的应该是与else配对的if被无效后,else的反应;尤其是本题有两个if,会让人想到配对了的if无效后,else还可能直接与另一个if形成配对关系。但是由实际编译的结果可知,else是从一而终的,它最开始配对的if无效,它也会直接跟着无效,不会与其他else配对。
温馨提示:答案为网友推荐,仅供参考
相似回答