if else讲究的是就近原则,并不是所有的if都必须要有对应的else,所以如果第一个判断语句如果是假的话,那么后面的语句当然就不执行了。这个题有点类似于嵌套语句。
#include <stdio.h>
main()
{
int x=1,y=2,z=3;
if(x>y)
{
if(y<z) printf("%d",++z);
else printf("%d",++y);
}
printf("%d\n",x++);
}
if和else中间只能有一个语句块或语句,像这道题,如果你认为第一个if和最后一个else是一对,那么中间那个if就违法了,所以只能认为中间的if和最后的else是一对,这就是所谓的就近原则
有以下程序
#include <stdio.h>
main()
{ int x=1,y=2,z=3;
if(x>y)
if(y<z) printf("%d",++z);
else printf("%d",++y);
printf("%d\n",x++);
}
程序的运行结果是 ______ 。
A. 331
B. 41
C. 21
D. 1
答案:D
解析:if(x>y) { if(y<z) printf("%d",++z); else printf("%d",++y); } printf("%d\n",x++); x>y为假,因此下面都不执行。程序中的else时和if(y<z)对应的,因此直接输出x++,即1。因此选D。