1.在KeilARM的LPCARM,存在(1<<31)编译警告问题
main.c(174): warning: #61-D: integer operation result is out of range
main.c(174): warning: #68-D: integer conversion resulted in a change of sign
由于编译器默认signed int即32位有符号整数类型,而1<<31实际为0x80000000,
这样就有可能改写了符号位(最高位)
依此类推,(2<<30),(3<<29)...等都会出现编译警告问题.
解决办法为: ((unsigned int)1<<31),((unsigned int)2<<30),...
本文探讨了KeilARM环境下LPCARM项目中出现的编译警告问题,特别是关于左移运算导致的符号位改写及整型转换的问题。通过使用无符号整数类型进行类型转换,可以有效避免这些警告。

9423

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



