switch语句编写模式
switch(整形表达式){
语句项;------->语句项是一些case语句;
}
case的编写模式
switch(整形表达式){
case 整形常数表达式:
语句;
}
也可以在case的:后面接上一个{},这样的话就可以在case里面定义局部变量了。
switch举例使用
int main(){
int a = 1,pa = 1;
switch(a){
case 1: printf("Hello\n");
break;
case 2:
switch(pa){ //switch可以嵌套使用
case 1:break;
case 2:break;
}
case 3:{
int i = 100;
printf("hi\n");
break;
}
default: //除case 1、2、3外的其他输入选项
break;
}
}
break在switch语句中是用在每一个case语句的末尾,意思为跳出本次的选择语句switch,如果在case语句末尾漏加了break,那么他就会继续往下读取直到结束或者遇到break。
在switch(整数表达式)的()内的意思可以理解为:在对应的整数case语句开始运行switch语句项。譬如switch(2)那么在运行其语句项的时候就是从case 2语句开始运行。
注意:在再到对应的case语句开始运行但是并不会跳过对应整形数的前面整形数的case,但是对跳过前面的代码段
例如:
int main()
{
switch (2) {
case 1:printf("heheheheheheheehehehe\n");
case 2:printf("hello\t");
case 3:printf("Bucai\n");
}
return 0;
}
在上面代码中每一个case内都没有break 那这段代码运行的结果是:hello Bucai。因为是在case2处开始运行运行到case 3后退出switch选择语句,再到return 0退出程序。
如果再下面这种情况下:
int main()
{
switch (2) {
case 2:printf("hello\n");
case 1:printf("不才是麻瓜\n");
case 3:printf("Bucai");
}
return 0;
}
那么在上面的情况下,这个运行的顺序是:找到对应整形数的case,然后往下运行,就是case2->case 1->case3的顺序运行。
下面代码段证明的是上面的注意:并不会跳过对应整形数的前面整形数的case,但是对跳过前面的代码段
int main()
{
switch (2) {
case 3:printf("Bucai\n");
case 2:printf("hello\n");
case 1:printf("不才是麻瓜\n");
}
return 0;
}
运行结果为:hello和不才是麻瓜。
那么在上面三个例子中咱么也是往深了一点去理解switch。在有些文章中有写到case后面一定要跟着break,不然就是错误的,关于这点我觉得是在case中不加break并不是错误,因为在C中程序是支持这样编写的,但是怎么用switch语句就怎么编写就好,每一段代码都会有不一样的需求。