天天看点

c语言中switch语句流程图_C语言switch详解

c语言中switch语句流程图_C语言switch详解

C语言switch史上最详细的讲解

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

### 语法

`switch`在C语言中的语法如下

``` c

switch(expression) {

case constant-expression :

statement(s);

break;

case constant-expression :

statement(s);

break;

default :

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`才可以退出

* switch有一个默认的情况,我们用`default`关键词表示,当switch后面的变量和所有`case`后面的常量都不匹配的情况下,默认执行default后面的语句

![switch_statement](https://user-images.githubusercontent.com/32572119/50939402-ad440e80-14b7-11e9-8fc1-1f921eff22b5.jpg)

Example 1

``` c

#include <stdio.h>

int main () {

char grade;

scanf("%c", &grade);

switch(grade) {

case 'A' :

printf("Excellent!n" );

break;

case 'B' :

case 'C' :

printf("Well donen" );

break;

case 'D' :

printf("You passedn" );

break;

case 'F' :

printf("Better try againn" );

break;

default :

printf("Invalid graden" );

}

printf("Your grade is %cn", 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("An");

break;

case 8:

case 7:

printf("Bn");

break;

case 6:

case 5:

printf("Cn");

break;

default:

break;

}

return 0;

}

```