c语⾔case条件判断,switch条件判断
switch的语法架构如下:switch (变量名称或表达式) {
case 符合数字或字符:
语句⼀;
break;
case 符合数字或字符:
语句⼆;
break;
default:
陈述三;
}
⾸先看看switch的括号,当中置放要取出数值的变量,取出数值之后,程序会开始与case设定的数字或字符⽐对,如果符合就执⾏以下的语句,直到遇到break后离开switch区块,如果没有符合的数值或字符,则会执⾏default后的语句,default不⼀定需要,可以省去这个部份。
来看看〈if 条件判断〉中的成绩等级⽐对,如何使⽤switch来改写:#include
int main(void) {
int score = 0;
int level = 0;
printf("输⼊分数:");
scanf("%d", &score);
level = score / 10;
switch(level) {
case 10:
case 9:
puts("得 A");
break;
case 8:
puts("得 B");
break;
case 7:
puts("得 C");
break;
case 6:
puts("得 D");
break;
default:
puts("得 E(不及格)");
}
return 0;
}
执⾏结果:输⼊分数:85
得 B
在这个程序中,使⽤除法并获取运算后的商数,如果⼤于 90 的话,除以 10 的商数⼀定是 9 或 10(100 分时),在case 10中没有任何的陈述,也没有使⽤break,所以会继续往下执⾏,直到遇到break离开switch,所以学⽣成绩 100 分的话,也会显⽰A的成 绩等级;如果⽐对的条件不在 10 到 6 这些值的话,会执⾏default下的陈述,这表⽰商数⼩于 6,所以学⽣的成绩等级就显⽰为 E 了。
注意在case后的等号是冒号⽽不是分号,这是初学者很常输⼊错误的符号;如果⽐对的是字符,记得加上单引号(''),例如:case 'A';
在case中若定义并初始化变量,以下是不合法的:switch(v) {
case 1:
int x = 0; // error: a label can only be part of a statement and a declaration is not a statement
printf("%d\n", x);
break;
default:
printf("default\n");
break;
}
这是因为以上的代码中,default与case属于同⼀区块,⽽初始化可能被跳过,如果真的要在case中若定义并初始化变量,必须明确定义另⼀个区块:switch(v) {
switch的用法c语言case 1:
{
int x = 0;
printf("%d\n", x);
}
break;
default:
printf("default\n");
break;
}
如果⽐对的是⼀个数值范围,在gcc编译器的扩充还允许这样的⽐对⽅式:switch(i) {
case 1 ... 30:
// statements
case 31 ... 1000:
// statements
default:
// statements
}
如上所⽰范的,gcc编译器的扩充可以使⽤...来设定⼀个范围的数值,⽽不⽤连续地编写case来⽐对。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论