代码:
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
这里的输出结果是什么?
一开始我以为是输出haha,但是这是错误的。结果是什么也不输出。
原因分析:
首先,if语句控制多条语句时,要加大括号,此处是单个语句,可以不添加大括号,但是不添加的时候就会有这个问题。
else的悬空问题,没有大括号的情况下,悬空的else与最近的未匹配的if匹配,因此这段代码实际的意思是:
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
}
return 0;
}
因此,if判断语句不成立,返回0