碰到如下问题
宏定义
#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))
{
}
文章评论(0条评论)
登录后参与讨论