switch语句的条件变量不能是bit类型的???

[复制链接]
11609|16
 楼主| Mindist 发表于 2009-10-19 12:21 | 显示全部楼层 |阅读模式
用51做一个界面是用到switch函数,发现如果把switch(x)中的x定义成bit类型则编译出错,改回char类型又可以了。。。
有人知道怎么回事吗?谢过。。。

出错提示:
TEMP.C(271): error C255: switch expression has illegal type
chen3bing 发表于 2009-10-19 13:35 | 显示全部楼层
C语言书上写道:
switch后面括弧内的表达式,可以是整形表达式或字符型表达式,也可以是枚举型数据。
对其他类型,原来的C标准不允许,新标准可以为任何类型。
 楼主| Mindist 发表于 2009-10-19 13:39 | 显示全部楼层
2# chen3bing
那C51可不可以的?我试了试不行的。。晕~
xwj 发表于 2009-10-19 14:13 | 显示全部楼层
bit类型只有两种状态,还switch啥呀?

评分

参与人数 1威望 +1 收起 理由
bhsdlmj + 1

查看全部评分

bhsdlmj 发表于 2009-10-19 15:16 | 显示全部楼层
再来一个问题

switch (afda)
    case(1)
         do somtheing1;
   case(2)
         do something2;
   default :
        do nothing;
}


switch (afda)
    case(2)
         do somtheing2;
   case(1)
         do something1;
   default :
        do nothing;
}

是一样的么?
注意 没有break啊
!!!哈哈
john_light 发表于 2009-10-19 15:26 | 显示全部楼层
你还是抱一本C语言的入门书啃啃吧
Fungin 发表于 2009-10-19 15:34 | 显示全部楼层
WL,钻牛角尖了吧??
 楼主| Mindist 发表于 2009-10-19 16:14 | 显示全部楼层
4# xwj
我知道,只是突然碰到这问题了就问问哈。。。
 楼主| Mindist 发表于 2009-10-19 16:15 | 显示全部楼层
5# bhsdlmj
是不一样啊。。。
xwj 发表于 2009-10-19 16:18 | 显示全部楼层
唉...

没有break的话,会从进入点一路执行下去,直到遇到break或者执行完下面所有的项(case和default ),直到遇到大括号才跳出。

没有break的话,5楼那两种当然是不一样的,比如case为1和case为2时。

写出这样的代码来,绝对该拉出去打PP打死
不想被打死的话就先去找本C语言的入门书啃啃吧。
 楼主| Mindist 发表于 2009-10-19 18:02 | 显示全部楼层
10# xwj
⊙﹏⊙好像大家不是完全明白我的意思。。。
我是说为什么switch(x)中的x为什么不可以是bit类型的。。。
和switch的运行方式。。。没什么联系吧?⊙﹏⊙
datouyuan 发表于 2009-10-19 18:04 | 显示全部楼层
bit类型只有两种状态,还switch啥呀?
xwj 发表于 2009-10-19 14:13


这已经说得很明白了。
arm_fan168 发表于 2009-10-19 19:23 | 显示全部楼层
bit型不是C语言的标准数据类型,C关键字没有bit。而且楼主贴出来的编译器错误提示已经说的很明确了,类型不合法。
 楼主| Mindist 发表于 2009-10-20 07:19 | 显示全部楼层
13# arm_fan168
明白了。。。多谢~~
hyg1984 发表于 2009-10-20 10:56 | 显示全部楼层
哈,无聊的人还真是多,就一个0和1嘛,还用switch()?直接用if,else得了。。。。。。:L
不过嘛,我是学到东西了,嘿嘿
 楼主| Mindist 发表于 2009-10-20 13:19 | 显示全部楼层
15# hyg1984
谁不知道用if else啊。。。⊙﹏⊙b汗
碰到问题就想问呗~
lovecat99 发表于 2016-1-5 23:53 | 显示全部楼层
本帖最后由 lovecat99 于 2016-1-5 23:54 编辑
bhsdlmj 发表于 2009-10-19 15:16
再来一个问题

switch (afda)

臭显摆

如果afda=2,case 2在后只执行do something 2; case 2在前就do something2, do something1都执行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:生活不懂我,但是我得懂生活。

13

主题

136

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部