社区
C语言
帖子详情
多个switch嵌套怎么写好,有没别的写法
nicker08
2010-07-22 11:52:54
开发单片机的,他要求是串口输入操作命令和操作数,操作数和操作码都不是固定长度的,现在我能想到的就是switch里面在嵌套switch,关键是命令和数据都不等长,让我头痛啊
比如说命令是0xff,0xaa,后接8B数据,实现功能1;
命令0xee,0xcc,0xdd,后接20B数据实现功能2;
还有很多
命令都是唯一可译的
有没有什么建议啊
...全文
906
26
打赏
收藏
多个switch嵌套怎么写好,有没别的写法
开发单片机的,他要求是串口输入操作命令和操作数,操作数和操作码都不是固定长度的,现在我能想到的就是switch里面在嵌套switch,关键是命令和数据都不等长,让我头痛啊 比如说命令是0xff,0xaa,后接8B数据,实现功能1; 命令0xee,0xcc,0xdd,后接20B数据实现功能2; 还有很多 命令都是唯一可译的 有没有什么建议啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nicker08
2010-07-24
打赏
举报
回复
我自己写出来了,前面还有写变量定义,
unsigned char data[5];
unsigned char data_display[20];
unsigned char data_diy[8];
unsigned char data_flag=0;
unsigned char flag=0;
nicker08
2010-07-24
打赏
举报
回复
void response(unsigned char x)
{
data[data_flag]=x;
/*********************系统设置部分**********************/
switch(data[0])
{
case 0xfe:
{
if(data_flag>0)
switch(data[1])
{
case 0x47:
{
if(data_flag>2&&data[2]==0x01) //
{
if(flag>3&&data[3]>0&&data[3]<9) //命令正确,开始接受数据
{
data_display[flag]=data[4];
flag++;
if(flag==20) //接收完20B数据
{
//hanshu();
data_flag=0;
flag=0;
break;
}
break;
}
data_flag++;
break;
}
data_flag++;
break;
}
nicker08
2010-07-24
打赏
举报
回复
[Quote=引用 22 楼 marshalking0000 的回复:]
swith的case太多确实挺麻烦的,每个都要一个break;
[/Quote]
这个倒无所谓,问题是不能把操作数误识别为操作命令,我昨天写了一个基本可以,但是有bug,求个健壮的啊
hrx1989
2010-07-24
打赏
举报
回复
单片机!!
也在学习中!
marshalking0000
2010-07-24
打赏
举报
回复
swith的case太多确实挺麻烦的,每个都要一个break;
versed8
2010-07-24
打赏
举报
回复
17 楼 的高手,能给个具体的例子吗
nicker08
2010-07-24
打赏
举报
回复
[Quote=引用 17 楼 jldream110 的回复:]
这个问题 你应该去 单片机版 问 。 用串口中断模式接收,在中断里设置关键字,把你说的 命令的第一个字节如 oxaa 看做是 head 。用head索引下面的数据,在数据接收完 设置全局标志 如 finish。 在中断里 不用switch 嵌套。switch 只 case head 就行 然后查询标志finish ,然后执行动作。
[/Quote]
感觉很有用。。。
但还是不是非常清晰该怎么做
blackmailer
2010-07-23
打赏
举报
回复
要不你用循环吧,其实用switch效率还是很高的。
例如unsigned int mm[]={0xee,0xcc,0xdd};
m1:数据1
m2:数据2
..
mn:数据n
for(int gg=0;gg<10;gg++){
if(input==mm[gg])
{
}
}
zjf30366
2010-07-23
打赏
举报
回复
正如楼上的所言,使用状态机也是不错的选择。当然使用switch也不是不可。问题是都可以解决的。
jackyjkchen
2010-07-23
打赏
举报
回复
数组索引+函数指针能几乎解决所有需要大量switch和if……else的情况,我差不多从学编程的第二年起,就从来不用switch了
bobo364
2010-07-23
打赏
举报
回复
《编译原理》词法分析之有限状态自动机,
应该可以,或者用5楼的hash也是不错的选择
顺便问下7楼有啥《编译原理》的好点的入门的书吗?
原来大学里没这门课了
fancyivan
2010-07-23
打赏
举报
回复
你知道的太多了
theoneluck
2010-07-23
打赏
举报
回复
[Quote=引用 9 楼 ayw215 的回复:]
引用 7 楼 zhao4zhong1 的回复:
《编译原理》词法分析之有限状态自动机
同意
写个状态自动机就好办啦
[/Quote]
你知道的太多了
ayw215
2010-07-23
打赏
举报
回复
[Quote=引用 7 楼 zhao4zhong1 的回复:]
《编译原理》词法分析之有限状态自动机
[/Quote]
同意
写个状态自动机就好办啦
Lonelywolf1899
2010-07-23
打赏
举报
回复
楼上会的好多啊,编译原理都出来了。
赵4老师
2010-07-23
打赏
举报
回复
《编译原理》词法分析之有限状态自动机
偶是江湖中人
2010-07-23
打赏
举报
回复
switch就用在这种场合了
若实在不想的话,自己就编写一个函数来实现
Qlaiaqu
2010-07-23
打赏
举报
回复
可以采用hash的方式进行处理:
首先使用某种hash算法,将命令导入该函数,返回某个整数值,然后使用一层switch就可以了。
主要是你要设计好hash算法,保证好接口的能接受所有数据,以及保证好计算结果的唯一性。
这样既简单,速度又快。
jixingzhong
2010-07-23
打赏
举报
回复
当然可以把指令部分合并取值,不过这样看代码的时候就很痛苦了..
jixingzhong
2010-07-23
打赏
举报
回复
switch参数只接收整型数值
加载更多回复(6)
Switch
case 使用及
嵌套
语法
Switch
case 使用及
嵌套
语法 目录
switch
case 语句讲解
Switch
也可以
嵌套
代码中 虽然
没
有 限制if else 能够处理的 分支 数量 ,但当分支过多时 , 用 if else 处理会不太方便 ,而且容易出现 if else 配对出错的情况 。 所以 对于这种情况 ,实际开发中一般使用
switch
语句代替...
原生JS--比
Switch
...Case更优雅的实现多条件判断以及三目运算的
嵌套
写
法
前几天看到坐在隔壁的前端大哥
写
的多条件判断
写
法
,十几行代码靠几行轻松实现,看到不同
写
法
的优劣,特地整体出来,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家! 文章目录多条件判断
写
法
三目运算的
嵌套
写
法
多条件判断
写
法
这个判断意思是根据现在的体感来判断季节,寒冷的话是冬天,温暖的话是春天,炎热的话是夏天,凉爽的话是秋天 1. if … else if … else function weather(nowSEP){ let season = '' if(nowSEP=.
第十六节 MATLAB
嵌套
if语句、
switch
语句、
嵌套
switch
语句
第十六节 MATLAB
嵌套
if语句、
switch
语句、
嵌套
switch
语句
Switch
也可以
嵌套
写
在前面 把一个
switch
作为一个外部
switch
的语句序列的一部分,即可以在一个
switch
语句内使用另一个
switch
语句。即使内部和外部
switch
的 case 常量包含共同的值,也
没
有矛盾。 示例
switch
(ch1) { case 'A': printf("这个 A 是外部
switch
的一部分" );
switch
(c...
c语言
switch
语句
嵌套
,浅谈c语言中
switch
语句的
嵌套
使用
switch
语句是一种分支控制语句,它的应用在程序设计中起到了很重要的作用。由于其格式复杂,对于初学者来说很难掌握,
switch
语句的
嵌套
使用更是让初学者难以理解。本文通过介绍
switch
嵌套
语句的形式、break语句的作用,以及分析一个实例,以期初学者在这方面有更好的认识和把握。科学时代2 1 ⑦ 00 5浅谈 c语言中 s th语句的
嵌套
使用 wi c郭宁(西理工大学应用科学学院江西赣州江31...
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章