打印
[技术问答]

容易被忽略的break关键字

[复制链接]
275|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1) 不能漏加的break

switch…case语句可以很方便的实现多分支结构,但要注意在合适的位置添加break关键字。程序员往往容易漏加break从而引起顺序执行多个case语句,这也许是C的一个缺陷之处。

对于switch…case语句,从概率论上说,绝大多数程序一次只需执行一个匹配的case语句,而每一个这样的case语句后都必须跟一个break。去复杂化大概率事件,这多少有些不合常情。

2) 不能乱加的break

break关键字用于跳出最近的那层循环语句或者switch语句,但程序员往往不够重视这一点。

1990年1月15日,AT&T电话网络位于纽约的一台交换机宕机并且重启,引起它邻近交换机瘫痪,由此及彼,一个连着一个,很快,114型交换机每六秒宕机重启一次,六万人九小时内不能打长途电话。

当时的解决方式:工程师重装了以前的软件版本。。。事后的事故调查发现,这是break关键字误用造成的。《C专家编程》提供了一个简化版的问题源码:



那个程序员希望从if语句跳出,但他却忘记了break关键字实际上跳出最近的那层循环语句或者switch语句。现在它跳出了switch语句,执行了use_modes_pointer()函数。但必要的初始化工作并未完成,为将来程序的失败埋下了伏笔。

使用特权

评论回复
沙发
suncat0504| | 2024-7-30 19:54 | 只看该作者
所以以前经常使用共通进行转移。只不过,因为不友好,慢慢被抛弃了。

使用特权

评论回复
板凳
suncat0504| | 2024-7-30 19:55 | 只看该作者
一本好的程序,要考虑合理分配功能、模块。使阅读、维护变得容易。

使用特权

评论回复
地板
suncat0504| | 2024-7-30 19:55 | 只看该作者
做一名好的程序员,没那么简单,要花心思的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

240

主题

1800

帖子

3

粉丝