C语言switch语句的用法详解?

switch语句允许测试变量与值列表的相等性,每个值称之为案例或者`case`,程序会检查switch后面的值并且与`case`后面的值比对,如果相等则执行后面的代码或代码块

C语言switch语句的用法详解?

文章插图
### 语法
`switch`在C语言中的语法如下
``` c
switch(expression) {
case constant-expression :
statement(s);
break; /* optional */
case constant-expression :
statement(s);
break; /* optional */
/* you can have any number of case statements */
default : /* Optional */
statement(s);
}
```
* switch语句中使用的表达式必须具是`int`或`enum`类型,否则如`float`等其他数据类型是无法通过的编译的,因为编译器需要switch后面的语句和case后面的值精确匹配,而计算机无法精确表达一个`float`数据类型
* switch可以任意个case语句(包括没有), 值和语句之间使用`:`分隔
* case后面的值必须是`int`常量值,或者返回结果为`int`类型的表达式,以下代码无法编译通过
``` c
switch (1) {
case 1.1:
break;
}
```
``` c
int a;
scanf(\"%d\", &a);
switch (a) {
case a + 1:
break;
}
```
* 当`switch`后面的变量值和`case`后面的常量值匹配相等后,`case`后面的代码将会被执行,直到`break`语句被执行后跳出`switch`代码块
* `break`不是必须的,如果没有`break`,则执行完当前`case`的代码块后会继续执行后面`case`代码块的内容,直到执行`break`才可以退出
【C语言switch语句的用法详解?】* switch有一个默认的情况,我们用`default`关键词表示,当switch后面的变量和所有`case`后面的常量都不匹配的情况下,默认执行default后面的语句
![switch_statement](://user-images.githubusercontent.com/32572119/50939402-ad440e80-14b7-11e9-8fc1-1f921eff22b5.jpg)
Example 1
``` c
#include <stdio.h>
int main{
/* local variable definition */
char grade;
scanf(\"%c\", &grade);
switch(grade) {
case \'A\' :
printf(\"Excellent!\\n\" );
break;
case \'B\' :
case \'C\' :
printf(\"Well done\\n\" );
break;
case \'D\' :
printf(\"You passed\\n\" );
break;
case \'F\' :
printf(\"Better try again\\n\" );
break;
default :
printf(\"Invalid grade\\n\" );
}
printf(\"Your grade is %c\\n\", grade );
return 0;
}
```
Example 2
``` C
#include <stdio.h>
int main {
printf(\"Please input your grade(1-100):\");
int grade;
scanf(\"%d\", &grade);
switch (grade / 10) {
case 10:
case 9:
printf(\"A\\n\");
break;
case 8:
case 7:
printf(\"B\\n\");
break;
case 6:
case 5:
printf(\"C\\n\");
break;
default:
break;
}
return 0;
}
```


    特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。