为什么这个结果c等于2?

img

因为else会与他最近的一个没有else匹配的if匹配 因此第二个if和下面的else是一个整体,都属于第一个if内部包含的 而第一个if判断为假 所以就直接执行输出c

因为A不小于B,所以这个程序走的是ELSE C++。但是是运行后再++,所以在C==2时就输出了,输出完以后就变成3了,但是程序已经结束了。变成几无所谓了。

这样就清晰了

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