uchar型数据比较(已解决)

2020-02-21 21:36发布

本帖最后由 FSL_TICS_ZJJ 于 2014-6-4 13:06 编辑

我想比较2个uchar数据A(实际压力) B(预设压力)  当A的数字大于B数据10   20   30   40   50时这5种情况时,   谁有好的方法呢
如果仅仅做差比较的话   A  -——  B  那就有可能是  10 ——   160  那么就溢出了 ,

还有各位能不能把你们在这里做的比较好的处理方法分享出来呗,

比如 字符转换、不同数据间的比较等等。大家都分享下呗  嘿嘿
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
霸气侧漏
1楼-- · 2020-02-22 21:37
wangpengcheng 发表于 2014-5-7 14:23
把无符号的8位改有有符号的16位,这样能排除A小于B的情况,然后把你的参数对应不要用10、20、30、40、50, ...

哥们 你的不大明白   《然后把你的参数对应不要用10、20、30、40、50,想办法对应到0x10、0x20、0x30、0x40、0x50,这样的话直接把低四位清除,就可以得出一个顺序的序列号,然后用指针数组就OK了!》  《》里的内容有点不明,用指针数组作何用处呢
霸气侧漏
2楼-- · 2020-02-23 00:18
 精彩回答 2  元偷偷看……
wangpengcheng
3楼-- · 2020-02-23 06:03
本帖最后由 wangpengcheng 于 2014-5-7 14:51 编辑
霸气侧漏 发表于 2014-5-7 14:31
哥们 你的不大明白   《然后把你的参数对应不要用10、20、30、40、50,想办法对应到0x10、0x20、0x30、0x ...


定义一个函数指针数组啊:
void Fun0(void)
{
        //此函数为空
}
void Fun10(void)
{
        //大于10的时候的处理
}
void Fun20(void)
{
        //大于20的时候的处理
}
......................


typedef void (*Fun)(void);

Fun Option[6] = {Fun0, Fun10, Fun20, Fun30, Fun40, Fun50};

如果你把你的参数调整到了0x10x20x30x40x50,那么你就可以用下面的方法:

int FunIndex =(( (A-B) > 0) &&( (A-B) < 60)) ? (A-B) >> 4 : 0;
Option[FunIndex]();

就可以了!
wangpengcheng
4楼-- · 2020-02-23 11:08
关键不要用10进制去做,尽量用16进制去做,这样可以用移位来做除法
songjie
5楼-- · 2020-02-23 12:11
不明白在说什么
步之道
6楼-- · 2020-02-23 17:39
同样不明白的路过,直接a判断(A-B)>20/30/40/50?

一周热门 更多>