当程序的一部分导致另一部分执行时,会发生分支。if-else if 语句允许程序分支到几个可能的路径之一,当这些测试之一成立时,它执行一系列测试(通常是关系)和分支。

switch 语句是一个类似的机制,但是它测试的是整数表达式的值,然后使用该值来确定要分支到哪一组语句,以下是 switch 语句的格式:

switch (IntegerExpression)

{

case ConstantExpression:

//在这里放置一个或多个语句

case ConstantExpression:

//在这里放置一个或多个语句

//case可被重复多次

default:

//在这里放置一个或多个语句

}

此类语句的第一行以单词 switch 开始,后面是括号内的整数表达式 Integer Expression。 这可以是以下两种之一:

任何一个整型数据类型的变量(包括 char)。

其值为任何整型数据类型的表达式。

在下一行是包含几个 case 语句的块的开头,每个 case 语句格式如下:

case ConstantExpression:

//在这里放置一个或多个语句

在单词 case 之后是一个常量表达式 Constant Expression,它必须是整数类型,如 int 或 char,后面跟一个冒号。常量表达式可以是整型常数或整型命名常量。该表达式不能是一个变量(如 n==25),也不能是布尔表达式(如 x<22)。case 语句标记一段分支语句的开头,如果 switch 表达式的值与 case 达式的值匹配,则进入该分支。

请注意,与大多数语句块不同,这组语句不需要大括号,且块中每个 case 语句的表达式必须是唯一的。

在所有 case 语句后面的是可选的 default 部分。如果没有一个 case 表达式与 switch 表达式匹配,则进入该分支。因此,它的作用就像 if-else if 语句中的结尾 else。

下面的程序显示了一个简单的 switch 语句的工作原理:

#include

using namespace std;

int main()

{

char choice;

cout << "Enter A, B, or C: ";

cin >> choice;

switch (choice)

{

case 'A' :

cout<< "You entered A. \n";

break;

case 'B' :

cout << "You entered B. \n";

break;

case 'C' :

cout << "You entered C.\n";

break;

default:

cout << "You did not enter A, B, or C!\n";

}

return 0;

}

程序输出结果:

Enter A, B, or C: B

You entered B.

第一个 case 是 “case 'A':”,第二个 case 是 “case 'B':”,第三个case是 “case 'C':”。如果变量 choice 包含值'A'、'B'或'C',则这些语句标记程序要分支的位置(请记住,字符变量和常数被视为整数)。如果用户输入除 A、B 或 C 以外的任何内容,则进入 default 默认分支。

注意,在“case 'A'”、“case 'B'”和“case 'C'”部分的末尾都有 break 语句。break 语句可以导致程序退出 switch 语句。在遇到 break 语句后,执行的下一条语句将是终止整个 switch 语句的封闭大括号后面的任何语句。

例如,在前面程序中,遇到 break 之后执行的就是第 22 行大括号之后的语句。每当要“断开”一个 switch 语句时,就需要一个 break 语句,它不会像 if-else if 语句那样选择执行一组语句之后就自动退出。

case 语句显示程序在块中开始执行的位置,break 语句则显示程序停止的位置。如果没有 break 语句,则程序将执行从匹配的 case 语句到块结尾的所有行。

注意,default 部分(如果没有 default 则是最后一个 case 部分)不需要 break 语句。当然有些程序员有强迫症,喜欢也放一个以保持一致。

下面程序是上面程序的修改版,它演示了如果忽略 break 语句会发生什么。

#include

using namespace std;

int main()

{

char choice;

cout << "Enter A, B, or C: ";

cin >> choice;

switch (choice)

{

case 'A' :

cout<< "You entered A. \n";

case 'B' :

cout << "You entered B. \n";

case 'C' :

cout << "You entered C.\n";

default:

cout << "You did not enter A, B, or C!\n";

}

return 0;

}

程序运行结果:

Enter A, B, or C: A

You entered A.

You entered B.

You entered C.

You did not enter A, B, or C!

在没有 break 语句之后,此程序“渎职”放行了匹配 case 表达式下面的所有语句,使它们都被执行了,但有时这样的效果也正是程序员想要的,如下面所示:

#include

using namespace std;

int main()

{

char feedGrade;

//Get the desired grade of feed

cout << "Our dog food is availablein three grades:\n";

cout << "A, B, and C. Which do you want pricing for? ";

cin >> feedGrade;

// Find and display the price

switch(feedGrade)

{

case 'a':

case 'A':

cout << "30 cents per pound.\n";

break;

case 'b':

case 'B':

cout << "30 cents per pound.\n";

break;

case 'c':

case 'C':

cout << "15 cents per pound.\n";

break;

default :

cout << "That is an invalid choice.\n";

}

return 0;

}

程序输出结果:

Our dog food is available in three grades:

A, B, and C. Which do you want pricing for? b

20 cents per pound.

当用户输入 a 时,相应的 case 并没有与之相关联的语句,也没有 break,所以程序被放行而不是跳出,进入下一个 case,对应 A 分支。同样的技术也应用于 b 和 C。

c语言 switch case 字符串,C++ switch case详解相关推荐

  1. go语言字符串换行_Go语言中的字符串处理方法示例详解

    1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号(" ...

  2. php switch case 判断语句,PHP的switch判断语句的“高级”用法详解,switch详解_PHP教程...

    PHP的switch判断语句的"高级"用法详解,switch详解 只所以称为"高级"用法,是因为我连switch的最基础的用法都还没有掌握,so,接下来讲的其实 ...

  3. PHP使用Switch语句判断星座,PHP的switch判断语句的“高级”用法详解 用switch语句怎样判断成绩的等级...

    php switch case 求具体详解,case里面能加if语句? swich 语句 我非常喜欢用 case里面加if干嘛 . php switch中能加if语句吗 PHP里 switch cas ...

  4. [转载] python 遍历字符串 字符_python 遍历字符串(含汉字)实例详解

    参考链接: Python字符串| rfind python 遍历字符串(含汉字)实例详解 python 遍历字符串(含汉字)实例详解 s = "中国china" for j in ...

  5. c语言数据类型int的用法,C语言基本数据类型:整型(int)用法详解|C语言学习

    C语言基本数据类型:整型(int)用法详解 1. 整型 int C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int 是整型之一,一般被称为整型.以后, ...

  6. C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一--驱动程序编写 结构体的一些基本用法 形式1:先定义结构体类型,再定义变量 形式2:在定义类型的同时定义变量 形式3:直接定义变量,用无名结 ...

  7. python 遍历字符串 字符_python 遍历字符串(含汉字)实例详解

    python 遍历字符串(含汉字)实例详解 python 遍历字符串(含汉字)实例详解 s = "中国china" for j in s: print j 首先一个,你这个'a'是 ...

  8. C语言结构体与指针ppt,c语言指针和结构体:链表详解.ppt

    c语言指针和结构体:链表详解.ppt 1,第十一章 链表,2,例跳马.依下图将每一步跳马之后的位置x,y放到一个"结点"里,再用"链子穿起来",形成一条链,相邻 ...

  9. JavaScript字符串对象的方法详解

    JavaScript字符串对象的方法详解 前面的博客我们说到了字符串对象的创建,属性及字符串的拼接.现在来详细讲一下字符串的方法. 1.ES6之前的方法 // js字符串的方法var str=&quo ...

  10. Java之格式化字符串及格式化输出详解

    Java之格式化字符串及格式化输出详解: 格式化输出: Java 5引入了与C语言的printf函数风格类似的format方法和printf方法,这两个方法可用于java.io.PrintStream ...

最新文章

  1. File,FileInfo,Directory,DirectoryInfo
  2. java 03_Java基础03—流程控制
  3. AI编译器与传统编译器的联系与区别
  4. EASYUI 表单(FORM)用法
  5. Visual Studio 2008 每日提示(六)
  6. shell引入sql脚本报错_Oracle11g rac集群安装执行脚本报错的解决方法
  7. 删除本地.svn文件
  8. wifi分析仪怎么看哪个信道好_无线路由器设置选择哪条信道比较好
  9. android 开源项目收集
  10. 概率论 方差公式_2021考研数学概率论与数理统计常考内容
  11. win10连接共享打印机出现0x0000011b
  12. c语言else if函数的使用方法,excel if函数怎么用?excel中if函数的使用方法图文详解...
  13. [问题]Make sure that `gem install pg -v '0.17.1'` succeeds before bundling.
  14. 微商怎么推广引流?学会玩豆瓣让精准流量源源不断
  15. 清华梦的粉碎——转自王垠
  16. VGA带音频转HDMI转换芯片|VGA转HDMI 转换器方案|VGA转HDMI转换器芯片介绍
  17. 适合发朋友圈的高情商文案
  18. 燕十八PHP全套视频
  19. 利用URL地址实现页面间传输数据和获取数据
  20. python 怎么得到图像深度图 软件_Python/OpenCV:从立体图像计算深度图

热门文章

  1. Oracle中的存储过程【Stored Procedure】和存储函数【Stored Function】
  2. 计算机数值怎么看大小,笔记本电脑尺寸怎么看_笔记本电脑尺寸查询
  3. win7 linux三系统,苹果电脑装windows7,Linux,mac os三系统,不需要BootBoot | MOS86
  4. android实现跑马灯效果,Android新手开发之旅-实现跑马灯效果
  5. 应用案例 | 星舆高精度追踪器在车辆调度管理中的应用案例
  6. 计算机网络课程设计组建大型网吧局域网,计算机网络课程设计报告—组建大型网吧局域网.doc...
  7. 苹果手机锁屏后无线重新连接服务器,iphone11锁屏自动断开wifi怎么办 苹果11手机热点自动断开解决方法...
  8. IC卡和ID卡初步了解
  9. 第一篇自用博客:git的操作(防忘记用的hh)封面是我最爱的歌手ikura强推她的每一首歌,简直就是行走的唱片啊有木有!
  10. congestion解决方案