CC++中switch语句的⽤法(执⾏顺序)
C/C++中switch语句的⽤法
我们经常见到的关于switch语句的解释⼀般是这样的:
⼀个switch语句允许测试⼀个变量等于多个值时的情况。每个值称为⼀个case,且被测试的变量会对每⼀个switch case进⾏检查。
语法:
switch(expression){
case constant-expression:
statement(s);
break;
case constant-expression:
statement(s);
break;
// 可以有任意数量的 case 语句
default:
statement(s);
}
需要注意:
1. expression必须是⼀个整形或枚举类型,或者是⼀个class类型,其中class有⼀个单⼀的转换函数将其转换为整型或枚举类型。
2. case的constant-expression必须和switch中的变量具有相同的数据类型,且必须是⼀个常量或字⾯量。
3. break不是必须包含的语句
4. default不是必须包含在switch中的
但是,当某个case后没有break时,许多⼈会想当然地认为这次switch结束了,跳出了switch,事实上,如果case语句不包含break,控制流将继续后续的case。
例如:
int main() {switch语句必须使用break吗
int c = 0, k;
for (k = 1; k < 3; k++){
switch(k){
default:
c += k;
case 2:
c++;
break;
case 4:
c += 2;
break;
}
}
printf("%d\n", c);
return 0;
}
第⼀次循环,k的值为1,执⾏defaul中的c += k,c的值为1,因为default中并没有break,所以此时程序并不会跳出switch,会继续后⾯的语句,也就是执⾏case2中的c++,此时c的值为2,并且遇到break,跳出switch。
第⼆次循环,k的值为2,执⾏case2中的c++,此时c的值为3,并且遇到break,跳出循环。
程序运⾏后输出的结果为:3。
如果将上⾯程序中的defaul语句换⼀个位置
int main() {
int c = 0, k;
for (k = 1; k < 3; k++){
switch(k){
case 2:
c++;
break;
case 4:
c += 2;
break;
default:
c += k;
}
}
printf("%d\n", c);
return 0;
}
程序中语句的执⾏顺序发⽣了改变,结果⼀定也和原来不⼀样了。程序运⾏后输出的结果为:2。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论