#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
;
}