大家好,又见面了,我是你们的朋友全栈君。
C语言还为多分支选择提供了另一个switch语句,其一般形式为:
开关(表达式){
案例常量表达式1: 语句1;
案例常量表达式2: 语句2;
…
条件常量表达式n: 语句n;
默认值: 语句n 1;
}
语义是: 计算表达式的值. 将其与后续常量表达式的值一一比较. 当表达式的值等于常量表达式的值时,将执行后续语句,然后不进行判断,并且在个案之后的所有后续语句将继续. 如果在所有情况下表达式的值都与常量表达式不同,则执行default之后的语句.
[示例4-9]
#include
int main(void){
int a;
printf(“input integer number: “);
scanf(“%d”,&a);
switch (a){
case 1:printf(“Mondayn”);
case 2:printf(“Tuesdayn”);
case 3:printf(“Wednesdayn”);
case 4:printf(“Thursdayn”);
case 5:printf(“Fridayn”);
case 6:printf(“Saturdayn”);
case 7:printf(“Sundayn”);
default:printf(“errorn”);
}
return 0;
}
此程序需要输入数字并输出英语单词. 但是在输入3之后,将执行情况3及以后的所有句子c语言 switch语句,并输出星期三及以后的所有单词. 这当然是不希望的. 为什么会这样?这仅反映了switch语句的功能. 在switch语句中,“ case constant expression”仅等效于一条语句标签. 如果表达式的值等于标签,则执行将被重定向到该标签,但是在执行label语句后无法自动跳出整个switch语句,因此似乎继续执行所有后续case语句. 这与之前介绍的if语句完全不同,因此应特别注意.
为避免上述情况,C语言还提供了一个break语句,专用于跳出switch语句. break语句仅具有关键字break,没有参数. 稍后将详细介绍. 修改示例程序,在每个case语句之后添加一个break语句c语言 switch语句,以便在每次执行后可以跳出switch语句,以避免输出意外结果.
[示例4-10]
#include
int main(void){
int a;
printf(“input integer number: “);
scanf(“%d”,&a);
switch (a){
case 1:printf(“Mondayn”); break;
case 2:printf(“Tuesdayn”); break;
case 3:printf(“Wednesdayn”); break;
case 4:printf(“Thursdayn”); break;
case 5:printf(“Fridayn”); break;
case 6:printf(“Saturdayn”); break;
case 7:printf(“Sundayn”); break;
default:printf(“errorn”);
}
return 0;
}
使用switch语句时,还应注意以下几点: 大小写之后的每个常量表达式的值不能相同,否则会发生错误. 在这种情况下,允许使用多个语句,可以将其括在{}中. 可以更改case和default子句的顺序,而不会影响程序执行结果. 默认子句可以省略.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-286614-1.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/194128.html原文链接:https://javaforall.cn