Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75610
  • 博文数量: 17
  • 博客积分: 789
  • 博客等级: 军士长
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-01 17:46
文章分类
文章存档

2010年(17)

我的朋友

分类: C/C++

2010-07-22 12:57:03

#include "stdio.h"

int main(int argc, char* argv[]) {
    int dec = 0, x = 2, y = 3;
    switch(dec) {
        case 0:
            if (x == 2) {
                if (y == 3)
                    break;
            }
            printf("Want to break to here\n");
    }
    printf("In fact break to here\n");
    return 0;
}


我们先看一下上述代码,上述代码中程序员使用的break本意是想跳到第一条printf语句,但是由于break语句s实际上是跳出最近的那层循环语句或者switch语句,所以上述代码跳出了switch语句,执行了第二条printf语句。

历史上,AT&T实验室就是由于这样一个小小的BUG导致1990年的时候,导致了历史第一次重大的网络故障,事实上,网络信号系统的这个设计事务引起了一连串的反应,最终导致长话网络瘫痪了近9个小时。而这一切,都归因于C语言重一条switch语句。
阅读(1220) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~