全部问题 > 当前问题

这道题有两个疑问

(1)第一个if对应的else在哪里(2) x>y为假,为什么下面都不执行

漫天小雨 2016-3-4 23:47:56

共 2 个回答

水根 2016-3-5 02:05:57

if else讲究的是就近原则,并不是所有的if都必须要有对应的else,所以如果第一个判断语句如果是假的话,那么后面的语句当然就不执行了。这个题有点类似于嵌套语句。

嘿嘿大人 2016-3-5 09:13:33

#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是一对,这就是所谓的就近原则

问题来自: a 和 a
有以下程序
#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&gt;y) { if(y&lt;z) printf("%d",++z); else printf("%d",++y); } printf("%d\n",x++); x&gt;y为假,因此下面都不执行。程序中的else时和if(y&lt;z)对应的,因此直接输出x++,即1。因此选D。