这个题目出题的人就是故意把题目写成这么乱七八糟让你看不清楚的样子,
你先把它改写一下:
main()
{
int a, b, c, x;
a = b = c =0;
x = 35;
if (!a)
x--;
else if (b)
;
if (c)
x = 3;
else
x = 4;
printf("%d\n");
}
一看最后要输出的是x的值,而后面的if else都对x进行了赋值,那么肯定得有一个改变x的值,所以前面的那个if ... else if完全可以忽略; 之后,一看c是0,说明执行了后面的那个else中的语句,即x = 4; ,故最后要输出4.
第一个if(!a)意思是如果a等于零,取x--
第二与第三是说如果b和c不为0是执行。
第四个是其他情况下执行
程序执行了两个分别是第一个和第四个if,也就是先执行x--后执行x=4所以就是4了。这是个迷人圈套
说真的我第一次看都晕了,实际编程时这是多余的,也是无效的。
没有吧 ;表示语句已经结束,嵌套也相应的结束了...
IF(B); 后面跟了一个分号,证明拆迁完了。
所以只有后面二句的有用。