C 多重嵌套 if 是否有简单处理方法

2020-01-15 19:24发布

本帖最后由 ajfan 于 2017-7-8 18:23 编辑

请教大牛关于C编程思路的

通过uart 接收到的6位字符串(前5位用于功能定义,第6位为参数,非固定),不同的组合定义了不同的指向功能,用普通的if 语句 先判断第一位,然后在判断语句里再嵌套5个if 确定最终的字符串(然后根据这个字符串指向对应的功能模块,第6位作为参数也一起送过去),问题来了,除了5重嵌套 if 语句外,是否有其他的方式可以进行优化的指向?用switch并将所有的组合放在case里将会有32 个选项,不怎么想用。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
27条回答
whatcanitbe
1楼-- · 2020-01-15 21:49
一次读一帧。if(buf[0]=='a'&&buf[1]=='0'...)即可
whatcanitbe
2楼-- · 2020-01-16 03:16
一次读一个字符只能老老实实来了
rengo
3楼-- · 2020-01-16 07:04
你写简单了,逻辑复杂了,单片机效率不一定高了
lcw_swust
4楼-- · 2020-01-16 12:03
 精彩回答 2  元偷偷看……
wye11083
5楼-- · 2020-01-16 13:45
lcw_swust 发表于 2017-7-8 19:39
状态机...........

是啊。只能状态机。否则靠if?自己把自己写晕了。我还有超时功能,不用状态机,搞个j8。
snail_dongbin
6楼-- · 2020-01-16 18:52
其实这种问题,是你定的协议问题,每个功能都用不一样的首字母,后面跟参数。
后面就是字符串分割 对比,另外单片机的最快的就是if了,不然你想判断用什么语句?

一周热门 更多>