当程序的一部分导致另一部分执行时,会发生分支。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,or C!\n";

}

return 0;

}

程序输出结果:

Enter A,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,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,or C!\n";

}

return 0;

}

程序运行结果:

Enter A,or C: A

You entered A.

You entered B.

You entered C.

You did not enter A,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,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,and C. Which do you want pricing for? b

20 cents per pound.

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

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

c++语言“case”,C++ switch case详解相关推荐

  1. C语言/C++【switch语句详解(用法、规则、流程图、实例)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 1.switch语句[C语言] 1.2.C语言中 switch语句的语法 1.3.switch语句遵循规则 1.3.switch ...

  2. 【C语言】扫雷小游戏详解

    [C语言]扫雷小游戏详解 前言: 还记得大明湖畔的夏雨荷,电脑课上的扫雷吗? ---------------------------是 他 吗--------------------------- 没 ...

  3. 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...

    <大学C语言期末考试练习题(带详解答案)>由会员分享,可在线阅读,更多相关<大学C语言期末考试练习题(带详解答案)(55页珍藏版)>请在金锄头文库上搜索. 1.一. 单项选择题 ...

  4. Go 语言 bytes.Buffer 源码详解之1

    转载地址:Go 语言 bytes.Buffer 源码详解之1 - lifelmy的博客 前言 前面一篇文章 Go语言 strings.Reader 源码详解,我们对 strings 包中的 Reade ...

  5. c语言while将字符循环,C语言 while语句的用法详解

    在C语言中,共有三大常用的程序结构: 顺序结构:代码从前往后执行,没有任何"拐弯抹角": 选择结构:也叫分支结构,重点要掌握 if else.switch 以及条件运算符: 循环结 ...

  6. R语言可视化绘图基础知识详解

    R语言可视化绘图基础知识详解 图形参数:字体.坐标.颜色.标签等: 图像符号和线条: 文本属性: 图像尺寸及边界: 坐标轴.图例自定义等: 图像的组合: #install.packages(c(&qu ...

  7. php函数find的用法,c语言find函数的用法详解

    c语言find函数的用法详解 C语言之find()函数 find函数用于查找数组中的某一个指定元素的位置. 比如:有一个数组[0, 0, 5, 4, 4]: 问:元素5的在什么位置,find函数 返回 ...

  8. SVN switch 用法详解 (ZZ)

    SVN switch 用法详解 (ZZ)  http://www.cnblogs.com/dabaopku/archive/2011/05/21/2052820.html 确实,以前不会用switch ...

  9. java语言链栈_Java语言实现数据结构栈代码详解

    近来复习数据结构,自己动手实现了栈.栈是一种限制插入和删除只能在一个位置上的表.最基本的操作是进栈和出栈,因此,又被叫作"先进后出"表. 首先了解下栈的概念: 栈是限定仅在表头进行 ...

  10. c语言线性表库函数大全,数据结构(C语言版)-线性表习题详解

    <数据结构(C语言版)-线性表习题详解>由会员分享,可在线阅读,更多相关<数据结构(C语言版)-线性表习题详解(23页珍藏版)>请在人人文库网上搜索. 1.数 据 结 构 ,线 ...

最新文章

  1. 天哪,路由器都能跑Docker了!
  2. mysql是如何管理数据结构_MySQL索引背后的数据结构和原理
  3. edge浏览器 开启java,启动Edge浏览器,然后等待其关闭[重复]
  4. 反编译得到的java文件好多错误 val$query什么意思_这部分代码有错么?一直提示输入框$(#msg).val()得到的值未定义...
  5. 2014-06-27nbsp;20:47
  6. 了解mysql文章_一篇文章带你深入了解MySQL 索引相关
  7. 光环大数据spark文档_推荐大数据Spark必读书目
  8. 《Android开发从零开始》——10. LinearLayout学习
  9. 2018值得一看的GAN论文回顾
  10. 我的Android进阶之旅------Android检测wifi连接状态
  11. .net @什么意思_.NET和F#周报2019-4 各地微软技术俱乐部汇总 ML.NET 0.10
  12. 异常检测时间序列_DeepAnT —时间序列的无监督异常检测
  13. Photoshop栅格化图层到底什么意思,什么时候该用栅格化涂层
  14. rm -rf /* 数据恢复记录
  15. c语言 楼盘查询系统,专业楼盘部模型
  16. python制作qq登录界面_Python制作一个仿QQ办公版的图形登录界面
  17. Spring IOC与DI、反射的理解 含小案例说明
  18. 烦人的警告 libpng warning: iCCP: known incorrect sRGB profile
  19. Ignite Beijing 2019你参加了吗?多图,慎点!
  20. 负对数似然 交叉熵 mse mae的区别

热门文章

  1. C语言编写飞机大战程序,C语言实现简单飞机大战
  2. 翻译专业资格(水平)考试介绍
  3. 软件工程经济学工程认证作业整理
  4. 027 多分支选择结构
  5. python数据可视化毕业设计题目_python:数据可视化
  6. 【英语语法入门】 第22讲 完成时
  7. Ubuntu下LimeSDR-USB或LimeSDR Mini使用说明
  8. 基于GARCH模型的股市研究与危机预警——R语言实现
  9. 数据分析案例--淘宝用户行为分析
  10. selenium设置文件下载路径