Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146408
  • 博文数量: 8
  • 博客积分: 342
  • 博客等级: 一等列兵
  • 技术积分: 109
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-02 09:31
文章分类

全部博文(8)

文章存档

2012年(8)

分类: LINUX

2012-05-24 19:30:00

常见的情况是在switch语句中default子句处在switch的最后面,但是假如default不是在最后一个会是什么情况呢?

先上一段代码
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int
  4. main(void)
  5. {
  6.     for (int i = 0; i < 5; i++) {

  7.         switch (i) {
  8.             default:
  9.                 printf("default\n");
  10.                 //break;
  11.             case 0:
  12.                 printf("0\n");
  13.                 break;
  14.             case 1:
  15.                 printf("1\n");
  16.                 break;
  17.             case 2:
  18.                 printf("2\n");
  19.                 break;
  20.             case 3:
  21.                 printf("3\n");
  22.                 break;
  23.         }
  24.     }

  25.     return EXIT_SUCCESS;
  26. }
大家觉得结果会是什么呢?
  1. gcc -std=c99 default.c
  1. 0
  2. 1
  3. 2
  4. 3
  5. default
  6. 0
哈哈… 意外吗?取消代码第12行的注释符号后,结构会是什么呢?大家猜一猜?
  1. 0
  2. 1
  3. 2
  4. 3
  5. default

总结:default语句最为switch语句一个第一个case的时候:
1.如果没有任何case匹配的时候,才会执行default语句,而且如果default语句里面不含break,将顺序执行下去。
2.如果有case语句匹配时,运行结果是和default放在switch的最后是一样的。

还可以尝试将default语句放在switch语句的几个case之间,结果和放在switch语句的最前面是类似的。
阅读(7142) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~