全部问题 > 当前问题

第1题没看懂

匿名课官 2015-7-27 14:53:53

共 2 个回答

最佳答案

邢慧雅 2015-7-27 15:00:51

因为else if(x==0)下面的if (x) y+=2;else y+=3;是

当x==0成立时执行的一个条件语句。

 所以当x==0为假时,没有对应的else,所以直接执行 printf("%d\n",y); 

因为x=1,所以x==0为假,直接输出y 为0

匿名课官 2015-7-27 15:35:11

回复 邢慧雅:谢谢

问题来自: 嵌套的if语句
有以下程序
#include <stdio.h>
main()
{ int x=1,y=0;
  if(!x) y++;
  else if(x==0)
    if (x) y+=2;
    else y+=3;
  printf("%d\n",y);
}
程序运行后的输出结果是 ______ 。
A. 3
B. 2
C. 1
D. 0
答案:D
解析:这道题目if嵌套的很混乱,根据else的就近原则,我先把格式给大家复原调整一下。 if(!x) y++; else { if(x==0) { if(x) y+=2; else y+=3; } } 由于x=1,因此!x为假,进入else。x==0为假,结束执行,y没有赋值。因此选D。