如果没有花括号,else和离得最近的if匹配
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("1\n");
else
printf("2\n");
return 0;
}
因为没有花括号,该代码的 else 语句与离得最近的 if (b == 2) 语句匹配,因此运行上边的代码没有结果,在一些编译器中,上边代码会变为如下所示:
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("1\n");
else
printf("2\n");
return 0;
}
也能看出编译器识别 else 语句是与离他最近的 if 语句匹配的。
正确的代码如下:
int main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("1\n");
}
else
printf("2\n");
return 0;
}
运行结果为2