C语言关键字浅析 您所在的位置:网站首页 C语言case语句转义if语句 C语言关键字浅析

C语言关键字浅析

2024-07-12 01:52| 来源: 网络整理| 查看: 265

### C语言关键字浅析系列 ### ### ISO/ANSI C 关键字 ###

case语句是C语言中switch开关语句中常用的关键字

将switch语句后的小括号中的变量视为参数

如果下面某一个case后跟的常量与参数相同

则从该case后的代码开始执行

 

case的作用:

标记switch选择结构中程序开始执行的位置。

 

对比if-else关键字,case关键字的一大优势是可以按“开关”的思想控制语句开始执行的位置。

但case的一个劣势是,case后的参数需要是int或者char常量,不能是表达式,而if-else可以根据表达式结果判断执行。

/* 转换地址,不区分大小写 */ int alterAddress(char c) { int add; switch(c) { case 'a': /* 如果参数c是'a',程序从此处开始执行 */ case 'A': /* 如果参数c是'A',程序从此处开始执行 */ add = 0x11; break; /* 为了屏蔽其他选项,发挥switch的选择功能,一类处理的最后要写上break跳过后面的执行语句 */ case 'b': case 'B': add = 0x12; break; case 'c': case 'C': add = 0x13; /* 此处有bug,没有break会导致后面的语句继续执行,也许会造成程序结果错误 */ case 'd': case 'D': add = 0x14; default: add = 0x01; } return add; }

 

case语句和if-else语句的另一个不同之处在于,case语句都在同一个作用域,case后定义变量可能会出错,比如下面这个例子:

int j; switch(c) { case 'a': int i; /* 这里编译器可能会报错,因为所有的case在一个作用域,这个i在所有case都可见 */ i = 0; case 'b': case 'c': j = 2; break; }

解决方案是,用一个{}在case后嵌套一个代码块,强行做一个作用域:

int j; switch(c) { case 'a': { int i; /* 用大括号围成一个代码块,i的作用域就限定在了该代码块内 */ i = 0; } case 'b': case 'c': j = 2; break; }

 

——参考《C Primer Plus第五版》

 

相关文章:

C语言关键字浅析-switch

C语言关键字浅析-default

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有