标题:switch case 句型中,case部分应该怎么写?
取消只看楼主
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
结帖率:93.75%
已结贴  问题点数:20 回复次数:2 
switch case 句型中,case部分应该怎么写?
程序代码:
char*scan() {
    static char temp[11];
    int i=0;
    char c;
    while(c=getchar()) {
loop1:
        switch(c) {
            case '#':
                if(i==0) {
                    c=getchar();
                    if(c=='\n') {
                        temp[0]='#';
                        temp[1]='\0';
                        return temp;
                    } else goto loop1;

                } else {
                    goto loop2;
                }
                break;
            case 'a'-'z'://[ERROR]duplicate case value
                temp[i++]=c;
                break;
            case 'A'-'Z'://[ERROR]duplicate case value
                temp[i++]=c;
                break;
            default:
loop2:
                if(i>10)i=10;
                temp[i]='\0';
                if(i>2) {
                    printf("{%s}",temp);
                    return temp;
                } else {
                    printf("{}");
                    return NULL;
                }
                break;
        }
    }


}

我印象中switch case 句型里,case部分除了简单的整形和字符型以外好像是也能像我这样指定一个区间的吧?

请问是我记错了语法   还是switch case根本就不可以指定区间的?


搜索更多相关主题的帖子: switch case temp return break 
2018-01-26 09:48
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:0 
参考  https://
写了个布尔值得判断语句,,,又报错了   汗

char*scan() {
    static char temp[11];
    int i=0;
    char c;
    while(c=getchar()) {
        switch(c) {
            case '#':
                if(i==0) {//如果#不在行首,我们就继续执行下一个switch,
                    c=getchar();
                    if(c=='\n') {
                        temp[0]='#';
                        temp[1]='\0';
                        return temp;
                    }

                }
            default:
                switch(true) {
                    case c>='a'&&c<='z'://[Error]'c'cannot appear in a constant-expression
                        temp[i++]=c;
                        break;
                    case 'A'-'Z'://[Error]'c'cannot appear in a constant-expression
                        temp[i++]=c;
                        break;
                    default:
                        if(i>10)i=10;
                        temp[i]='\0';
                        if(i>2) {
                            printf("{%s}",temp);
                            return temp;
                        } else {
                            printf("{}");
                            return NULL;
                        }
                        break;
                }
                break;
        }
    }
}
请问是因为这中写法是其他语言的吗?还是我又写错了?

φ(゜▽゜*)♪
2018-01-26 10:29
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:0 
回复 3楼 九转星河
不好用,因为我这里是需要分成3类做处理(甚至更多)。

一类小写字母,一类大写字母,一类其他字母。用这样的除法switch  和一般的if()else  又有什么区别

φ(゜▽゜*)♪
2018-01-26 11:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484458-1-1.html




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

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