C++ switch 语句
一个 switch 语句允许测试一个变量等于多个值时的情况
每个值称为一个 case
,且被测试的变量会对每个 switch case 进行检查
如果没有一个匹配,那么就会运行 default
分支的代码
switch 语法
C++ 中 switch 语句的语法格式如下
switch(expression){ case constant-expression : statement(s); break; // 可选的 case constant-expression : statement(s); break; // 可选的 // 可以有任意数量的 case 语句 default : // 可选的 statement(s); }
switch 语句必须遵循下面的规则
-
switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型
-
在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
-
case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量
-
当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
-
当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行
-
不是每一个 case 都需要包含 break 。如果 case 语句不包含 break ,控制流将会 继续 后续的 case,直到遇到 break 为止
-
一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的
switch 语句流程图
范例
/** * file: main.cpp * author: 简单教程(www.twle.cn) * * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ #include <iostream> int main () { // 局部变量声明 char grade = 'B'; switch(grade) { case 'A' : std::cout << "很棒!" << std::endl; break; case 'B' : case 'C' : std::cout << "做得好" << std::endl; break; case 'D' : std::cout << "您通过了" << std::endl; break; case 'F' : std::cout << "最好再试一下" << std::endl; break; default : std:: cout << "无效的成绩" << std::endl; } std::cout << "成绩是 " << grade << std::endl; return 0; }
编译和运行以上范例,输出结果如下
做得好 成绩是 B