7063|5

58

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【求助】宏定义时溢出,想用unsigned int,怎么办? [复制链接]

宏定义时溢出,想用unsigned int,怎么办?
============================================================
有如下一句定义:
#define TIMER_A_50 (750*50) // 50ms
程序中有:
CCR0 = TIMER_A_50; // 50ms
============================================================
IAR C/C++ Compiler for MSP430
V3.20A/W32 [Kickstart] (3.20.1.3)
编译器报警告:
Warning[Pe061]: integer operation result is out of range
Warning[Pe068]: integer conversion resulted in a change of sign
============================================================
而实际上750*50=37500 < 65535,实在是不解,怎么解决此问题呢?

最新回复

是呀,750*50u就好了.  详情 回复 发表于 2007-1-16 18:30
 
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

扩展开来的实验

1种情况:
当改为#define TIMER_A_50 (37500) // 50ms
编译没有警告了。
2种情况:
改为CCR0 = 750*50; // 50ms
警告依然存在。
3种情况:
改为CCR0 = 37500; // 50ms
没有警告出现。
-----------------------------
现在演变成给unsigned int数赋值时750*50就二条警告,而直接用37500就正常,
WHY?谁给个合理的解释?
-----------------------------
我用是编译器是:
IAR Assem××er for MSP430
V3.20A/W32 (3.20.1.9)
C:\Program Files\IAR Systems\Embedded Workbench 4.0\430\bin\a430.exe
2004-6-15 15:59:34, 491520 bytes

IAR C/C++ Compiler for MSP430
V3.20A/W32 [Kickstart] (3.20.1.3)
C:\Program Files\IAR Systems\Embedded Workbench 4.0\430\bin\icc430.exe
2004-6-15 15:58:08, 5623808 bytes

IAR Build
4.3 (4.3.0.0)
C:\Program Files\IAR Systems\Embedded Workbench 4.0\common\bin\iarbuild.exe
2004-6-10 9 2004-6-9 21:27:08, 233472 bytes
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
怎么就没人给个合理的解释啊
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
哈,很明显,赋值前,750×50是作为有符号整数来计算,当然溢出了,改为750u×50u(强制为无符号)就是无符号的计算了,一切OK。。。。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
(unsigned int)750×(unsigned int)50
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

6
 
是呀,750*50u就好了.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表