打印

为什么计算的结果不对

[复制链接]
4164|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ZhongKP|  楼主 | 2022-7-12 00:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
steelen| | 2022-7-22 12:31 | 只看该作者

为什么计算的结果不对

编译器问题tmp = (2000-1000);
tmp *=2999;
tmp /=1000;
这样就可以了

使用特权

评论回复
板凳
ZhongKP|  楼主 | 2022-7-26 20:16 | 只看该作者
应该是因为(2000-1000)/2999 = 2999000,超出了16位的存储,编译器没有自动转化为u32,要进行手动转化。所以可以这样:
u32 tmp0;
u16 tmp;
tmp0 = (2000-1000);
tmp0 *= 2999;
tmp = tmp0/1000;
或者这样
tmp = (u32)(2000-1000)*2999/1000;

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝