switch-case
switch(type){
case 1:
printf("你好");
break;
case2:
printf("早上好");
break;
case3:
printf("晚上好");
break;
case 4:
printf("再见");
break;
default://不等于上面4种情况则等于default的值,default:默认的
printf("啊,什么啊")
}
switch(控制表达式){ //只能是整数型结果
case常量: //常量可以是常数,也可以是常数的表达式
语句....;
case常量:
语句....;
default:
语句.....;
}
case后面的常量表达式只能是:
1.枚举常量 2.数值常量 3.字符常量 4.常变量
switch后面的表达式允许是任何类型,但VC中只允许为int或char类型
break:在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,直到遇到一个break,或者switch结束为止。
case 1;case 2;case 3;default是程序的入口 , 从入口开始执行,直到break结束
如果break注释掉则进入下一个入口(case) 。
执行完一个case语句后,流程控制转移到下一个case语句继续执行,“case”常量表达式只起到语句标号的作用,并不是在该处进行条件判断。在执行switch语句时,根据Switch()表达式的值找到与之匹配的case子句,就从此case子句开始执行不再进行判断。
switch(i)
{
case 1:语句1;
case 2:语句2;
default:语句3;
case 3:语句4;
}
当i==1时,从case1开始往下一个不落的执行
当i==2时,从case2开始往下一个不落的执行
当i==3时,只执行case3一句
当i==4时,从default处开始往下一个不落的执行
当i==0时,执行情况同i==4
switch是选择而不是循环,在switch中出现了break语句,该语句的功能hi是退出switch语句执行下一条语句。
在switch中出现continue是错误的,除非switch本身就属于for或while循环的一部分
break和continue:
break如果用于循环是用来终止循环
break如果用于switch,是用来终止switch
break不能直接用于if,除非if属于循环内部的一个子句
for(i=0;i<3;++i) { if(3>2) break; //break虽然是if内部的语句,但break终止的确是外部的for循环 printf("嘿嘿!\n") }
for(i=0;i<3;++i)
{
for(j=1;j<4;++j)
break; //break只能终止距离它最近的循环
printf("哈哈!\n");
}
在多层 switch嵌套中,break只能终止距离它最近的switch
continue:用于跳过本次循环余下的语句,转去判断是否需要执行下次循环
for(1;2;3)
{
A;
B;
continue; //如果执行该语句,则执行完该语句后,会执行语句3,C和D都会跳过
C;
D;
}