#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
今天看到这段代码,很多人都会因为else与第一个if对齐而觉得就是与第一个if匹配。

而运行后发现什么都没有打印。其实else匹配原则是和它离的最近的if匹配的,即第二个if后面的代码是嵌套在第一个if下。这也跟代码的书写风格有关,其实稍加调整即可简单易懂,如下。
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
{
printf("hehe\n");
}
}
else
{
printf("haha\n");
}
return 0;
}