| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 618 人关注过本帖
标题:请教关于switch的使用问题
只看楼主 加入收藏
windofland
Rank: 2
等 级:论坛游民
帖 子:27
专家分:12
注 册:2010-12-1
收藏
 问题点数:0 回复次数:5 
请教关于switch的使用问题
switch的基本形式如下:
switch(表达式)
{
    case 常量表达式1:语句1;
    case 常量表达式2:语句2;
    case 常量表达式3:语句3;
   
   
   
    case 常量表达式n:语句n;
    default         :语句n+1;
}
那么
问题1:
case后面只能跟着常量么?类似于a>10&&a<=100,这样的能用么?
问题2:
常量表达式后面跟的语句1到语句n,都只能有一句么?不能复合语句么?如果可以用复合语句,那么是不是必须用{}给引起来?
搜索更多相关主题的帖子: 表达式 default 
2011-11-07 21:33
小先生
Rank: 1
等 级:新手上路
帖 子:9
专家分:5
注 册:2011-11-4
收藏
得分:0 
case后面只能跟着常量么?类似于a>10&&a<=100,这样的能用么?  不能哦!他只是switch(表达式)中的表达式的一种情况(有限的)
 问题2:
 常量表达式后面跟的语句1到语句n,都只能有一句么?不能复合语句么?如果可以用复合语句,那么是不是必须用{}给引起来?可以的
可以的情况如下:
   case 常量表达式1:
     case 常量表达式2:
     case 常量表达式3:语句a;break
;表示1 2 3种情况都执行语句a



2011-11-07 22:02
windofland
Rank: 2
等 级:论坛游民
帖 子:27
专家分:12
注 册:2010-12-1
收藏
得分:0 
回复 2楼 小先生
ls没看明白我说的第二个问题,以下面的程序为例:
程序代码:
#include<stdio.h>
#include<windows.h>

void main()
{
    float x;
    int a;
    scanf("%f",&x);
    if(x>100||x<0)
        a=-1;
    else
        a=(int)(x/10);
    switch(a)
    {
        case -1:printf("errer\n");break;
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:printf("E\n");break;
        case 6:printf("D\n");break;
        case 7:printf("C\n");break;
        case 8:printf("B\n");break;
        case 9:
        case 10:printf("A\n");break;
    }
    system("pause");
}

以case5为例,这块是switch的语句部分,break表示的是中断switch
我想问的是:break之前的这部分难道只能写一个语句么?比如只写【printf("E\n");】,不能再写其他的语句么?比如【printf("E\n");printf("%3.1f\n",x);】?


[ 本帖最后由 windofland 于 2011-11-7 22:10 编辑 ]
2011-11-07 22:08
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 3楼 windofland
一个case后面不管多少条语句,只要不碰到break就不会跳出,不过出于编程规范和可读性还是加上{}好

总有那身价贱的人给作业贴回复完整的代码
2011-11-07 22:15
windofland
Rank: 2
等 级:论坛游民
帖 子:27
专家分:12
注 册:2010-12-1
收藏
得分:0 
原来是这样,谢谢了
2011-11-07 22:24
luchar
Rank: 9Rank: 9Rank: 9
来 自:南京
等 级:蜘蛛侠
帖 子:279
专家分:1263
注 册:2011-11-3
收藏
得分:0 
第二个问题,4楼说的对
这种形式也是可以的
case 表达式1:语句1;break;
case 表达式2:语句2;break;
case 表达式3:语句3;
                语句5;语句6;语句7;语句8;
                /*没有break,则继续执行case 表达式4后面的语句4*/
case 表达式4:语句4;break;
只要没有break出现,那么它就一直按顺序执行下去。直到遇到break或结束为止。
2011-11-07 22:27
快速回复:请教关于switch的使用问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040678 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved