OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5174|回复: 7

switch case语句中,判断1,2,3,4不是可省略写为1 ... 4么,keil里不行吗

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
20
金钱
20
注册时间
2016-6-27
在线时间
2 小时
发表于 2016-10-12 14:49:44 | 显示全部楼层 |阅读模式
本帖最后由 简单木木 于 2016-10-12 14:53 编辑

switch(i) {                 case 1 ... 4: do_1();
               break;
        case 5 ... 8: do_2();
               break;
        default:
               break;
}
gcc里可以这样的啊。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2775
金钱
2775
注册时间
2015-6-1
在线时间
394 小时
发表于 2016-10-12 14:53:24 | 显示全部楼层
本帖最后由 yuzeyuan1 于 2016-10-12 14:54 编辑

switch(i)
{
case 1:
case 2:
case 3:
case 4:
     printf("I am in 1|2|3|4");     break;
case 5:
case 6:
case 7:
case 8:
     printf("I am in 5|6|7|8");
     break;
default:
     printf("I am in default");
}

自在随心
回复 支持 1 反对 0

使用道具 举报

3

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1366
金钱
1366
注册时间
2016-5-26
在线时间
1698 小时
发表于 2016-10-13 16:57:38 | 显示全部楼层
简单木木 发表于 2016-10-12 15:00
我要写的 case 1 ... 99:
case 10 ... 999:
怎么写?不是说这种不行,,确实有这种需求?

[mw_shl_code=cpp,false]
switch ( (i>=1) +
         (i>=100)) {
case 1:
case 2:
}
[/mw_shl_code]

[mw_shl_code=cpp,false]
switch ( 1 * ( (  1<=i) && (i<= 99) ) +
         2 * ( (100<=i) && (i<=999) )) {
case 1:
case 2:
case 4:
}
[/mw_shl_code]

不过你说的1~99和10~999这种有重叠的估计是不行的……
淘汰人的从来是工具而不是年龄
嵌入式的冷知识屋 blog.csdn.net/k_o_carnivist
回复 支持 1 反对 0

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
20
金钱
20
注册时间
2016-6-27
在线时间
2 小时
 楼主| 发表于 2016-10-12 15:00:51 | 显示全部楼层

我要写的 case 1 ... 99:
case 10 ... 999:
怎么写?不是说这种不行,,确实有这种需求?
回复 支持 反对

使用道具 举报

15

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2014-4-29
在线时间
299 小时
发表于 2016-10-12 16:09:11 | 显示全部楼层
简单木木 发表于 2016-10-12 15:00
我要写的 case 1 ... 99:
case 10 ... 999:
怎么写?不是说这种不行,,确实有这种需求?

你说的这种大量的分支配合少量的跳转,本来就是一种很容易变动的需求,用switch根本不好维护。
办法就是改成if;或者从判断条件那里加个表达式把大量的分支映射成少量的分支。
回复 支持 反对

使用道具 举报

28

主题

288

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1213
金钱
1213
注册时间
2011-4-9
在线时间
97 小时
发表于 2016-10-12 16:59:18 | 显示全部楼层
使用if,判断值范围
回复 支持 反对

使用道具 举报

2

主题

4

帖子

0

精华

新手入门

积分
20
金钱
20
注册时间
2016-6-27
在线时间
2 小时
 楼主| 发表于 2016-10-13 16:04:56 | 显示全部楼层
xianshasaman 发表于 2016-10-12 16:09
你说的这种大量的分支配合少量的跳转,本来就是一种很容易变动的需求,用switch根本不好维护。
办法就是 ...

同一个地方if 使用太多会出现错误的
回复 支持 反对

使用道具 举报

3

主题

238

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1366
金钱
1366
注册时间
2016-5-26
在线时间
1698 小时
发表于 2016-10-13 16:48:01 | 显示全部楼层
嗯这个不是C标准里面规定的写法,只有部分编译器支持。
http://stackoverflow.com/questio ... -a-switch-statement
淘汰人的从来是工具而不是年龄
嵌入式的冷知识屋 blog.csdn.net/k_o_carnivist
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 01:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表