C语言if条件语句问题

以下程序的输出结果是(  )。
main()
{int a=0,b=1,c=0,d=20;
if (a) d=d-10;
else if (!b)
if (!c) d=15;
else d=25;
printf("d=%d\n",d);
}
A、d=10
B、d=15
C、d=20
D、d=25

答案是C,我觉得应该是执行最后一句else d=25;
求高人指点

第1个回答  2011-10-13
搞清楚if else 的配对,这样看,你就容易知道了。
int a=0,b=1,c=0,d=20;
if (a)
{
d=d-10;
}
else if (!b)
{
if (!c) d=15;
else d=25;
}
printf("d=%d\n",d);
很明显,条件都不满足,所以还是返回原值,d=20.注意 if (!c) d=15;else d=25; 这个else是配对
if (!c) 的,而不是上面的 else if (!b) 。本回答被提问者采纳
第2个回答  2011-10-13
if else有严格的配对关系,就是“就近原则”,else是和上面最近的一个单独的if配对的。所以,程序这样看你就懂了
main()
{int a=0,b=1,c=0,d=20;
if (a) d=d-10;
else if (!b)
{
if (!c) d=15;
else d=25;
}
printf("d=%d\n",d);
}
第3个回答  2015-09-13

    if语句的标准格式为:

    if(表达式)

    {

     语句;

    }

    if后面圆括号内的表达式一般是关系表达式或逻辑表达式,它表示分支的条件,若表达式值非0,则进入执行语句,若为0,则不执行if内的语句


第4个回答  2011-10-13
if (!c) d=15;
else d=25;
编译器把他俩认为一对了
第5个回答  2011-10-13
看了 上面说的 很面白了