打印
[STM32F1]

大神们问一个简单的小问题:uint8_t 参数要大于0吗

[复制链接]
1190|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxggqq_123|  楼主 | 2019-11-2 10:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码如下
uint8_t Read_record(uint8_t tripnum)
{       

if(Gu8Pro_cnt_read==0){
return FAIL;
}
else if(Gu8Pro_cnt_read<tripnum){
return FAIL;
}
else{
return READ;
}
}

调用该函数,参数tripnum为0时会出错,uint8_t 取值不是包括0吗?
Gu8Pro_cnt_read是一个全局变量,值>=1

使用特权

评论回复
沙发
cry1109| | 2019-11-2 11:31 | 只看该作者
Gu8Pro_cnt_read是啥类型的数据啊?tripnum是无符号类型数据,比较大小时最好用相同类型的数据。

使用特权

评论回复
板凳
xxggqq_123|  楼主 | 2019-11-2 16:39 | 只看该作者
Gu8Pro_cnt_read 也是uint8_t

使用特权

评论回复
地板
mcu5i51| | 2019-11-3 08:07 | 只看该作者
else没有用呀

使用特权

评论回复
5
gx_huang| | 2019-11-3 11:20 | 只看该作者
这个if else语句不建议这么设计,也许你的逻辑是对的,但是别人看起来很累。
2个条件并非排斥的。
何不把逻辑搞得一清二楚呢?
if(a==0)
{
  aaa
}
else
{
  if(a<b) bbb
    else ccc
}
这样多好,逻辑绝对不会错,二选一的条件

使用特权

评论回复
6
ayb_ice| | 2019-11-4 11:39 | 只看该作者
如果Gu8Pro_cnt_read >= 1,tripnum为零,肯定返回READ,
如果不是这个结果,就是你的前提条件不对,比如Gu8Pro_cnt_read并不是>= 1,被改变了

使用特权

评论回复
7
icecut| | 2019-11-4 17:29 | 只看该作者
不会出错. 你可以单步看汇编

使用特权

评论回复
8
磨砂| | 2019-12-4 12:02 | 只看该作者
不是很明白楼主的意思

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

24

帖子

0

粉丝