21ic问答首页 - 为什么计算的结果不对
为什么计算的结果不对
ZhongKP2022-07-12
用的是STC8A8K64D,定义了一个u16的变量,计算后通过串口发送。
u16 tmp;
tmp = (2000-1000)*2999/1000;
为什么串口发送 tmp 为 0xFFF1。
将 tmp 定义为 u32。
u32 tmp;
tmp = (2000-1000)*2999/1000;
串口发送数据为 0xFFFFFFF1。
再将 tmp 直接赋值为2999000,tmp = 2999000,串口输出数据为 0x2DC2D8(2999000)。
这是什么原因嘞?
u16 tmp;
tmp = (2000-1000)*2999/1000;
为什么串口发送 tmp 为 0xFFF1。
将 tmp 定义为 u32。
u32 tmp;
tmp = (2000-1000)*2999/1000;
串口发送数据为 0xFFFFFFF1。
再将 tmp 直接赋值为2999000,tmp = 2999000,串口输出数据为 0x2DC2D8(2999000)。
这是什么原因嘞?
赞0
u32 tmp0;
u16 tmp;
tmp0 = (2000-1000);
tmp0 *= 2999;
tmp = tmp0/1000;
或者这样
tmp = (u32)(2000-1000)*2999/1000;
评论
2022-07-26
赞1
tmp *=2999;
tmp /=1000;
这样就可以了
评论
2022-07-22
您需要登录后才可以回复 登录 | 注册