首页 > 试题广场 >

下面代码段输出为

[单选题]
下面代码段输出为()
#include <stdio.h>
int i;
int main(){
  for(i = 0;i < 3;i++){
    switch(i){
    case 0: printf("%d", i);
    case 2: printf("%d", i);
    default: printf("%d", i);
    }
  }
}
  • 000111
  • 000020
  • 000102
  • 000122
case 后面的常量表达式实际上只起语句标号作用 , 而不起条件判断作用 , " 只是开始执行处的入口标号 ".  因此 , 一旦与 switch 后面圆括号中表达式的值匹配 , 就从此标号处开始执行 , 而且执行完一个 case 后面的语句后 , 若没遇到 break 语句 , 就自动进入 下一个 case 继续执行 , 而不在判断是否与之匹配 , 直到遇到 break 语句才停止执行 , 退出 break 语句 . 因此 , 若想执行一个 case 分之后立即跳出  switch 语句 , 就必须在此分支的最后添加一个 break 语句 .

#include <stdio.h>

 

int main()

{

 char x = 'B';

 switch (x){

   case 'A':printf("A");

   case 'B':printf("B");

   case 'C':printf("C");

   default: printf("D");

 }

}

 

result: BCD


发表于 2015-08-22 17:09:41 回复(0)
i=0;执行 case0,case2,default;
i=1,执行default;
i=2,执行case2,default;
i=3循环结束。
发表于 2016-06-20 11:26:04 回复(3)
case语句如果分支中没有break,接下来的代码都会依次执行;当i=0时,执行case 0,由于没有break,则case 2和default均会被执行
发表于 2015-08-13 13:52:49 回复(2)
.一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句.
发表于 2015-08-17 16:13:40 回复(0)
因为没有break,因此只要匹配一个,那么后面的也会执行,并且default永远最后判断,无论位置如何,但不一定是最后执行,如下代码
for(int i=0;i<3;i++){
    switch(i){
    case0:printf("%d",i);
    default:printf("%d",i);
    case2:printf("%d",i);
    
    }


结果就是000 11 2  此时需要注意的是当i=1时,此时 先判断 case0,再判断case2最后default,但是执行完default以后case2 也会执行,这就是default永远最后判断,无论位置如何,但不一定是最后执行

发表于 2016-09-25 21:24:36 回复(0)
i = 0: case 0 符合条件,后继续执行接下来的全部语句
i = 1:case 0,case 2都不符合条件,略过,执行default  
i = 2:case 0,不符合条件,略过,case 2符合条件,执行其与后面的语句
发表于 2019-04-01 14:34:22 回复(0)
i=0;执行 case0,case2,default;
i=1,执行default;
i=2,执行case2,default;
i=3循环结束。]
, 若没遇到 break 语句 , 就自动进入 下一个 case继续执行 , 而不在判断是否与之匹配 , 直到遇到 break 语句才停止执行 , 退出 break 语句 . 因此 , 若想执行一个 case 分之后立即跳出 switch 语句 , 就必须在此分支的最后添加一个 break 语句 .

发表于 2017-08-03 10:15:28 回复(0)
发表于 2022-09-29 15:33:21 回复(0)
i为0,三种情况都有。i为1,默认一次,i为2,情况二和默认都为2
发表于 2022-01-10 14:41:55 回复(0)
匹配后,没遇到break,执行接下来所有语句
发表于 2021-12-01 11:54:23 回复(0)
从case0开始到default 3个0,i=1从第3个开始,1个1,i等于2从case2开始两个2
发表于 2021-10-31 14:49:00 回复(0)
一旦匹配,只要没有遇到break,就会执行接下来所有的case
发表于 2021-04-14 10:49:12 回复(0)
<p>必须添加break语句</p><p><br></p>
发表于 2021-03-18 11:37:05 回复(0)
<p>满足条件,则按顺序往下执行,除非有break跳出</p>
发表于 2020-12-13 19:02:49 回复(0)
当没遇到break将会忽略case 继续保持i的值继续往下执行 。当i=0时符合第一条选择语句,没遇到break,继续保持i=0往下执行得到000
发表于 2020-10-07 09:01:45 回复(0)
switch中的条件语句没有添加 break; 因此每一条语句都会按照顺序执行
发表于 2020-08-30 17:01:34 回复(0)
case语句如果分支中没有break,接下来的代码都会依次执行;当i=0时,执行case 0,由于没有break,则case 2和default均会被执行
发表于 2019-11-14 15:52:44 回复(0)
switch只会寻找一次i的值,没遇到break会继续执行下一个case。
发表于 2019-09-11 15:42:06 回复(0)
从case进入不遇到break不退出! i=0.进入case 0 ,直至结束,000 i=1.无case , default 1. i=2.进入case 2 ,直至结束,22
发表于 2019-01-30 21:03:27 回复(0)
case   后面的常量表达式实际上只起语句标号作用   ,   而不起条件判断作用   ,     "   只是开始执行处的入口标号   ".    因此   ,   一旦与   switch   后面圆括号中表达式的值匹配   ,   就从此标号处开始执行   ,   而且执行完一个   case   后面的语句后   ,   若没遇到   break   语句   ,   就自动进入   下一个 case   继续执行   ,   而不在判断是否与之匹配   ,   直到遇到   break   语句才停止执行   ,   退出   break   语句   .   因此   ,   若想执行一个   case   分之后立即跳出    switch   语句   ,   就必须在此分支的最后添加一个   break   语句   .
发表于 2016-06-28 17:04:02 回复(0)