码迷,mamicode.com
首页 > 其他好文 > 详细

switch-case的基本用法

时间:2015-04-10 17:37:10      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

技术分享if语句处理两个分支,处理多个分支时需使用if-else-if结构,但如果分支较多,则嵌套的if语句层就越多,程序不但庞大而且理解也比较困难.深层嵌套的else-if语句往往在语法上是正确的,但逻辑上却没有正确地反映程序员的意图。例如,错误的else-if匹配很容易被忽略。添加新的条件和逻辑关系,或者对语句做其他的修改,都很难保证正确性。因此,C/C++语言又提供了一个专门用于处理多分支结构的条件选择语句,称为switch语句,又称开关语句.它可以很方便地来实现深层嵌套的if/else逻辑。

switch语句的一般形式为:

switch(表达式)

case 常量表达式1:
语句1;
break;

case 常量表达式2:
语句2;
break; 

……
case 常量表达式n:
语句n;
break; 

default:
语句n+1;
break;
}

早几天做到一道switch语句相关的作业题,当时莫名想到case后面可不可以接范围表达式,因为感觉也算是常量表达式吧。搜了好久才找到几个相关问题,大部分回答还是不可以,结果在少数几个回答中说是gcc标准下编译可以,代码如下(这是我在devC上运行编译的,成功了,TC3.0就不行了):

 1 #include<stdio.h>
 2 int main () 
 3 { 
 4 char my_string[] = "hello there"; 
 5 char ch;
 6 
 7 printf("please input a char :");
 8 ch = getchar();
 9 
10 switch(ch)
11  {
12   case 0 ... 9: 
13       printf("you enter a digit\n");
14       break;
15   case a ... z:
16       printf("you enter a lower case letter\n");
17       break;
18   case A ... Z:
19       printf("you enter a upper case letter\n");
20       break;
21   default:
22       printf("I don‘t know what you enter :-)\n");
23       break;
24  }
25 } 

运行结果:

技术分享

devC运行成功,而TC3.0却不允许“. . .”这个符号:

技术分享

还是依编译器而异吧。

不过看到那么多人斩钉截铁地说不行也是心有感慨呢,应该都知道编译器有各种差异吧,但还是能那样肯定的否定,尤其在楼上已经放出成功运行的答案的情况下。也有人说书上有明确说过不可以,但这不是行得通吗?

对于机器的原理、思维现在也还是可以说是一窍不通,既然并不熟悉,就不该轻易地说出绝对的话吧。书上也从没讲过". . ."这玩意儿的用法,所以今天对我而言就像发现新大陆一样,即便只是一个小小的符号的用法

【END】

技术分享

switch-case的基本用法

标签:

原文地址:http://www.cnblogs.com/suzyc/p/4414783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!