关于#c语言#的问题:if(a>0)到else a=b=c=1这个不都是第一个if里面的语句吗

img


这个为什么不是全部等于负一,而是等于一。if(a>0)到else a=b=c=1这个不都是第一个if里面的语句吗?条件不成立,就是最后一个else的吗

答案是A, 因为:if(a=b+c) 里是赋值语句,得到 a = -1, 同时这个 if(-1) 为真,所以执行 else a=b=c= 1。
把代码缩进,就可以看的清楚了if 和 else 的配对:

#include <stdio.h>
int main()
{
    int a = 2, b = 0, c = -1;
    if (a = b + c)
        if (a > 0)
            b = c = a;
        else if (a == 0)
            a = b = c = 0;
        else
            a = b = c = 1;
    else
        a = b = c = -1;
    printf("%d,%d,%d", a, b, c);
    return 0;
}

if后面没有加大括号,使用只影响下一行代码