在C语言中,编译器通常将else与上一个(最近的)if进行匹配,除非通过花括号来制定匹配关系。看下面一个例子:
//Example 1: x = 11, y = 9
#include <stdio.h>
int main()
{
int x, y;
x = 11;
y = 9;
if ( x < 10 )
if ( y > 10 )
printf( "*****\n" );
else
printf("#####\n");
printf("$$$$$\n");
}
其输出为
$$$$$
由于else是与最近的if响匹配,所以上述代码实际上与下面的代码功能一致:
//Example 2: x = 11, y = 9
#include <stdio.h>
int main()
{
int x, y;
x = 11;
y = 9;
if ( x < 10 ) {
if ( y > 10 )
printf( "*****\n" );
else
printf("#####\n");
}
printf("$$$$$\n");
}
如若改变x和y的值,如下面所示:
//Example 2: x = 9, y = 11
#include <stdio.h>
int main()
{
int x, y;
x = 9;
y = 11;
if ( x < 10 )
if ( y > 10 )
printf( "*****\n" );
else
printf("#####\n");
printf("$$$$$\n");
}
根据Example 2 的分析,不难知道运行结果为:
*****
$$$$$
再接着看下面一个例子:
//Exmaple 3: x = 9, y = 11
#include <stdio.h>
int main()
{
int x, y;
x = 9;
y = 11;
if ( x < 10 ) {
if ( y > 10 )
printf( "*****\n" );
}
else {
printf("#####\n");
printf("$$$$$\n");
}
}
与前面的例子相比,代码上唯一区别就是加了两对花括号“{ }”,而功能上else只与第一个if相匹配,容易看出,输出为:
*****
交换x,y的值,x = 11,y = 9,输出为:
#####
$$$$$