原创 IAR 编译 宏定义 溢出的问题

2011-1-19 13:18 7329 8 8 分类: MCU/ 嵌入式

碰到如下问题

宏定义

#define X_MAX  1732608000

uint32_t Yi;

程序中判断

if(Yi>(X_MAX<<1))

{

}

结果总是提示错误

Warning[Pe061]: integer operation result is out of range
Warning[Pe068]: integer conversion resulted in a change of sign
============================================================
而实际上<

42 9496 7295

why??

 

解决:

赋值前,乘法作为有符号整数来计算,当然溢出了,改为(强制为无符号)运算就是一切OK。。。。

if(Yi>((uint32_t)X_MAX<<1))

{

}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /1 下一条