1、switch 语句
使用switch
语句选择要执行的许多代码块之一。
语法
switch(expression) { case x: // 代码块 break; case y: // 代码块 break; default: // 代码块 }
switch case 语句有如下规则:
1)switch
语句中使用的表达式必须具是int
或enum
类型,否则如float等其他数据类型是无法通过的编译的,因为编译器需要switch后面的语句和case后面的值精确匹配,而计算机无法精确表达一个float数据类型。
2)switch
可以任意个case
语句(包括没有), 值和语句之间使用:分隔。
3)case
后面的值必须是int
常量值,或者返回结果为int
类型的表达式,以下代码无法编译通过。
4)当switch
后面的变量值和case
后面的常量值匹配相等后,case
后面的代码将会被执行,
直到break
语句被执行后跳出switch
代码块
5)break
不是必须的,如果没有break
,则执行完当前case
的代码块后会继续执行后面case
代码块的内容,
直到执行break
才可以退出
6)switch
有一个默认的情况,我们用default
关键词表示,当switch
后面的变量和所有case
后面的常量都不匹配的情况下,默认执行default后面的语句
例如:
#include <stdio.h> int main() { printf("Please input a number(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; }
2、break关键字
当C语言代码执行到break
关键字时,它将跳出switch
块。
#include <stdio.h> int main() { char c='\0'; for(int i=1;i<=4;i++){ switch(i){ case 1:c='J'; printf("%c",c); //break; case 2:c='e'; printf("%c",c); break; case 3:c='p'; printf("%c",c); //break; printf("好\n");//不匹配都会执行 } } /*当i=1时运行结果是 Je 当i=2时 运行结果是 e 当i是3是运行结果是 p 好 当i是4时运行结果是好*/ }
注意: continue
不能用于switch
语句
3、default关键字
default
关键字指定在没有case
匹配的情况下要运行的一些代码:
例如:
int day = 4; switch (day) { case 6: printf("学习python\n"); break; case 7: printf("学习java\n"); break; default: printf("cjavapy\n"); } // 输出 "cjavapy"
注意:如果default
语句用作switch
块中的最后一条语句,则不需要break
。