| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 957 人关注过本帖
标题:Switch 语句求助
只看楼主 加入收藏
电子门外汉
Rank: 2
等 级:论坛游民
帖 子:57
专家分:29
注 册:2010-5-16
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:11 
Switch 语句求助
程序代码:
#include <stdio.h>
int main(void)
{

 char c;

 switch(c=getchar())

 {case ('0'<=c && c<='9')  : printf("this is a digit\n");             break;
  case ('a'<=c && c<='z')  : printf("this is a small letter\n");    break;
  case ('A'<=c && c<='Z')  : printf("this is a capital letter\n");    break;
  default : printf("this is the other\n");

 }

 }--------------------Configuration: stu - Win32 Debug--------------------
Compiling...
c.c
E:\软件\VC6\MyProjects\stu\c.c(6) : error C2051: case expression not constant
E:\软件\VC6\MyProjects\stu\c.c(7) : error C2051: case expression not constant
E:\软件\VC6\MyProjects\stu\c.c(8) : error C2051: case expression not constant
执行 cl.exe 时出错.

c.obj - 1 error(s), 0 warning(s)

Switch语句为什么会出错呢?不明白,望大侠指教!谢谢
搜索更多相关主题的帖子: Switch 语句 
2010-10-16 15:49
troy0215
Rank: 2
等 级:论坛游民
帖 子:16
专家分:71
注 册:2009-5-22
收藏
得分:2 
貌似提示的是case标签必须是常量~
2010-10-16 15:54
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:3 
case 写法错误!

If You Want Something, Go Get It, Period.
2010-10-16 15:56
电子门外汉
Rank: 2
等 级:论坛游民
帖 子:57
专家分:29
注 册:2010-5-16
收藏
得分:0 
回复 3楼 m21wo
能具体说说怎么改么?谢谢
2010-10-16 15:59
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:5 
程序代码:
#include <stdio.h>
int main(void)
{
    char c;
    c=getchar();
    if('0'<=c && c<='9')
        printf("this is a digit\n");
    else if('a'<=c && c<='z')
        printf("this is a small letter\n");
    else if('A'<=c && c<='Z')
        printf("this is a capital letter\n");
    else
        printf("this is the other\n");
}






  
我觉得你的这种情形用if-else if-else 就比较好些,如果用switch-case 那要一个个列出来,好繁琐啊!

If You Want Something, Go Get It, Period.
2010-10-16 16:00
delong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:57
专家分:126
注 册:2010-6-9
收藏
得分:5 
case太麻烦了,最好用if~
case后面的要是常量才行~~
2010-10-16 16:44
筱晓绾
Rank: 10Rank: 10Rank: 10
来 自:湖南
等 级:贵宾
威 望:12
帖 子:512
专家分:1736
注 册:2010-9-1
收藏
得分:5 
用if ...else...
2010-10-16 16:46
zzgzzg00
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:388
专家分:627
注 册:2010-8-2
收藏
得分:0 
学习了

粗心是大敌
2010-10-16 17:21
yusan
Rank: 2
等 级:论坛游民
帖 子:17
专家分:49
注 册:2010-10-16
收藏
得分:0 
位置颠倒了啦  就是例如 ‘0’<c&&c<'9';
应该是  c>'0'&&c<'9';
2010-10-16 22:57
dimer
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2010-5-27
收藏
得分:0 
首先   case option:中 option 必须是整形常量表达式,即在编译时,编译器必须知道它是多少,整形 呢是因为浮点数不适合做精确比较,所以c语言规定如此。每个case后的option 不能相同。
####lz程序中 编译时 编译器都不知道c是多少,所以错的。
另外 ‘0’<=c;中 ,像 ‘0’,‘a ’,等是不能做左值的,只能做右值。
2010-10-17 01:00
快速回复:Switch 语句求助
数据加载中...
 
   



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

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