加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C表达式对两个不同的编译器进行不同的评估

发布时间:2020-12-16 05:38:38 所属栏目:百科 来源:网络整理
导读:我有在GCC和Atmel Studio之间运行不同的代码: uint32_t tc = 107900;int8_t m = 59;tc = tc - (m*1800); 在海湾合作委员会,tc的结果是1700,如预期. 使用AtmelStudio,tc中的结果是132772,这是不正确的. 问题似乎是,使用AtmelStudio,m * 1800术语的计算精度有
我有在GCC和Atmel Studio之间运行不同的代码:
uint32_t tc = 107900;
int8_t   m  = 59;

tc = tc - (m*1800);

在海湾合作委员会,tc的结果是1700,如预期.

使用AtmelStudio,tc中的结果是132772,这是不正确的.

问题似乎是,使用AtmelStudio,m * 1800术语的计算精度有限.

我的问题是,哪个编译器正确地做?

谢谢.

解决方法

两者都正确地进行.表达式m * 1800将以类型int计算.如果int是32位,那么它将是106200.如果int是16位,这是一个完全可以接受的方式来实现C编译器,那么它是-24872.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读