打印
[STC单片机]

一个奇怪的问题

[复制链接]
700|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tianxiongweitxw|  楼主 | 2020-8-9 15:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, iap, OCL, TE, ck
本帖最后由 tianxiongweitxw 于 2020-8-9 15:58 编辑

请教一下前辈:以下算法
a1=(IapReadByte(Oclock_Hour)>>4)*10*60;
b1=(IapReadByte(Oclock_Hour)&0x0f)*60 ;
c1=(IapReadByte(Oclock_Minu)>>4)*10 ;
d1=IapReadByte(Oclock_Minu)&0x0f;
hour_adjust=HEXtoBCDData((a1+b1+c1+d1-5)/60);  
这样写,hour-adjust结果正确。改成下面就不正确(把a b c d同时加在一起):
hour_adjust=HEXtoBCDData((((IapReadByte(Oclock_Hour)>>4)*10*60+ (IapReadByte(Oclock_Hour)&0x0f)*60 +(IapReadByte(Oclock_Minu)>>4)*10+IapReadByte(Oclock_Minu)&0x0f )-5)/60);   
难道有溢出,才这么几个算式,没有道理?

使用特权

评论回复

相关帖子

沙发
ayb_ice| | 2020-8-10 08:33 | 只看该作者
这取决于变量的类型定义

使用特权

评论回复
板凳
tianxiongweitxw|  楼主 | 2020-8-10 12:07 | 只看该作者
函数IapReadByte返回字节。a b c d是unsigned INT

使用特权

评论回复
地板
ayb_ice| | 2020-8-10 13:10 | 只看该作者
tianxiongweitxw 发表于 2020-8-10 12:07
函数IapReadByte返回字节。a b c d是unsigned INT

有些地方强制转换下
hour_adjust=HEXtoBCDData((((IapReadByte(Oclock_Hour)>>4)*(u16)10......

使用特权

评论回复
5
tianxiongweitxw|  楼主 | 2020-8-10 16:02 | 只看该作者
查了资料,确实是溢出了,谢谢AYB

使用特权

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

本版积分规则

72

主题

520

帖子

0

粉丝