全部问题 > 当前问题

为什么else if(a==0)为假后就直接跳出,这个条件不成立不是该继续执行下面的吗?

如题,谢谢老师!

啊啊啊Awhen 2016-7-12 22:19:56

共 2 个回答

嘿嘿大人 2016-7-13 10:29:15

嵌套啊,因为后面那一坨都是在if(a==0)的作用域里面的,所以当这个if不成立的时候,后面作用域里面的都不执行了

陈亦杰 2016-12-16 11:07:58

回复 嘿嘿大人:不满足a==0  不是该执行else吗

问题来自: 嵌套的if语句
有以下程序
#include <stdio.h>
main()
{
  int a=1,b=0;
  if(!a) b++;
  else if(a==0) if(a) b+=2;
  else b+=3;
  printf("%d\n",b);
}
程序运行后的输出结果是 ______ 。
A. 0
B. 1
C. 2
D. 3
答案:A
解析:将程序中的if语句重新排版如下: if(!a) b++; else { if(a==0) { if(a) b+=2; else b+=3; } } a=1,所以!a为假,执行else。a==0为假,跳出选择结构。b自始至终并没有被赋值。因此选A。