IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C陷阱与缺陷 第2章 词法“陷阱” 2.4 switch语句 -> 正文阅读

[C++知识库]C陷阱与缺陷 第2章 词法“陷阱” 2.4 switch语句

switch 语句
C语言的switch语句的控制流程能够依次通过并执行各个case部分,这一点是C语言的与众不同之处。?
两段程序分别用C语言和Pascal语句编写:?
switch(color) {
?? ?case 1: printf("red");
?? ?break;
?? ?case 2: printf("yellow");
?? ?break;
?? ?case 3: printf("blue");
?? ?break;
}
switch(color) {
?? ?case 1: printf("red");
?? ?case 2: printf("yellow");
?? ?case 3: printf("blue");
}
两段代码要完成的是同样的任务。根据变量color的值(1、2或3),分别打印出red、yellow或blue。只有一种例外情况:那就是用Pascal语言编写的程序段中每个case部分并没有C语言的break语句对应的部分。之所以会这样,是因为C语言中把case标号当做真正意义上的标号,因此程序的控制流会径直通过case标号,而不会收到任何影响。而在Pascal中,每个case标号会隐含地结束了前一个case部分。

用C语言编写以下程序?
switch(color) {
?? ?case 1: printf("red");
?? ?case 2: printf("yellow");
?? ?case 3: printf("blue");
}
又进一步假定变量color的值为2.最后,程序将会打印出
yellowblue
因为程序的控制流程在执行了第二个printf函数的调用之后,会自然而然地顺序执行下去,所以第三个printf函数调用也会被执行。

C语言中的switch语句的这种特性,既是它的优势所在,也是它的一大弱点。说它是一大弱点,是因为程序员很容易遗漏各个case部分的break语句,造成一些难以理解的问题。说它是优势所在,是因为如果程序要有意省略去一个break语句,则可以表达出一些采用其他方式很难方便地加以实现的程序控制结构。特别是对于一些大的switch语句,我们常常会发现各个分支的处理大同小异:对某个分支稍作改动,剩余部分就完全等同于另一个分支情况下的处理。?

程序有一个switch语句,用来处理每个不同的操作码。在这种假想的计算机上,只要将第二个操作数的正负号反号后,减法运算和加法运算本质上就是一样的。?
case SUBTRACT:
?? ?opnd2 = -opnd2;
?? ?/*此处没有break语句*/
case ADD:
?? ?...
当然,像上面的例子添加适当的注释是一种不错的做法。能够让阅读这段代码的人知道此处是有意省去了一个break语句。?

它的作用是一个编译器查找符号时跳过程序中的空白字符。这里,空格键、制表符和换行符的处理都是相同的,不过在遇到换行符时,程序的代码行计数要进行递增:?
case '\n':
?? ?linecount++;
?? ?/*此处没有break语句*/
case '\t':
case ' ':
?? ?...?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:19:47  更:2022-07-21 21:20:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/11 1:46:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码