由于编译器默认数据都是int型,所以我们写1<<31 不是0x80000000,而是负数,所以会提示out of range。
解决方法:给1进行强制转换,((unsigned int)1<<31) 这样问题就解决了
本文探讨了在使用左移运算符时遇到的数据类型溢出问题,并提供了一个简单有效的解决方案——通过强制类型转换来避免编译器默认的int类型处理,确保左移操作能够正确执行。
由于编译器默认数据都是int型,所以我们写1<<31 不是0x80000000,而是负数,所以会提示out of range。
解决方法:给1进行强制转换,((unsigned int)1<<31) 这样问题就解决了
1184
199
804

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