有以下程序: #include <stdio.h> main() { int x=1, y=0, a=0, b=0;    switch (x)    { case 1:     switch(y)     { case 0: a++;

admin2020-11-27  27

问题 有以下程序:
#include  <stdio.h>
main()
{ int   x=1, y=0, a=0, b=0;
   switch (x)
   { case   1:
    switch(y)
    { case   0:  a++;  break;
      case   1:  b++;  break;
      }
     case 2:  a++;  b++;  break;
     case 3:  a++;  b++;
  }
  printf("a=%d, b=%d\n", a, b);
}
程序的运行结果是(  )。

选项 A、a=2,b=2
B、a=2,b=1
C、a=1,b=1
D、a=1,b=0

答案B

解析 case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从此case子句执行下去,不在进行判断,直到碰到break或函数结束为止。所以执行内层switch(y)时只执行了a++,此时a的值为1。然后执行外层case 2语句的a++;b++;a为2,b为1。所以结果为B)。
转载请注明原文地址:https://kaotiyun.com/show/Xp3p777K
0

最新回复(0)