integer operation result is out of range
在编写测试程序的过程中,有如下定义:
#define UART1_EN (1<<31)
编译后编译器报错:
integer operation result is out of range (61-D),经查资料是由于溢出所致,宏定义默认常量是有符号型,当左移31位时,常数就变成负数,编译器就会给出如上的警告信息解决办法是强制类型转换成无符号类型:
#define UART1_EN ((U32)1<<31)
这样,警告信息就消除了。
本文详细介绍了在C++编程中遇到整数操作导致结果超出范围的错误,通过实例展示了宏定义常量溢出的原因,并提供了将有符号类型强制转换为无符号类型的解决方法,有效消除编译器警告信息。
2910

被折叠的 条评论
为什么被折叠?



