[
- switch statement (C language) - C 中文开发手册
- 根据整数参数的值执行代码。用于需要根据整数值执行许多代码分支中的一个或多个分支的情况。
句法
- 说明
case:只要所有constant_expressions的值都是唯一的(在转换为提升的表达式类型之后),switch语句的主体可以具有任意数量的标签。最多default:只能有一个标签(尽管嵌套的开关语句可能使用自己的default:标签,或者case:标签的常数与封闭开关中使用的常数相同)。如果在转换为提升的表达式类型后,表达式求值为等于constant_expressions之一的值,那么控制权将转移到标有该constant_expression的语句。如果表达式计算出的值与任何case:标签都不匹配,并且default:标签存在,则控件将转移到标签标签所对应的语句中default:。如果表达式求值的值与任何case:标签都不匹配,且default:标签不存在,则不会执行任何开关主体。break语句在遇到语句中的任何地方时会退出switch语句:
switch(1) { case 1 : puts("1"); // prints "1", case 2 : puts("2"); // then prints "2" ("fall-through") } - switch(1) { case 1 : puts("1"); // prints "1" break; // and exits the switch case 2 : puts("2"); break; }
- 关键词
switch, case, default.
例
#include <stdio.h> void func(int x) { printf("func(%d): ", x); switch(x) { case 1: printf("case 1, "); case 2: printf("case 2, "); case 3: printf("case 3.\n"); break; case 4: printf("case 4, "); case 5: printf("case 5, "); default: printf("default.\n"); } } int main(void) { for(int i = 1; i < 10; ++i) func(i); } - 输出:
func(1): case 1, case 2, case 3.func(2): case 2, case 3. func(3): case 3. func(4): case 4, case 5, default. func(5): case 5, default. func(6): default. func(7): default. func(8): default. func(9): default. - 参考
C11标准(ISO / IEC 9899:2011): 6.8.4.2 switch语句(p:149-150) C99标准(ISO / IEC 9899:1999): 6.8.4.2 switch语句(p:134-135) C89 / C90标准(ISO / IEC 9899:1990): 3.6.4.2 switch语句