下面的代码会触发一个gcc
警告(海湾合作委员会4.2.1):
#include <boost/cstdint.hpp>
boost::uint64_t x = 1 << 32; // warning: left shift count >= width of type
既然类型是 64 位的,那不是应该没问题吗?
如何移位 >= 32 位uint64_t
?
如果你的编译器支持long long
:
boost::uint64_t x = 1LL << 32;
否则:
boost::uint64_t x = boost::uint64_t(1) << 32;
既然类型是 64 位的,那不是应该没问题吗?
不,尽管如此x
是 64 位,1
isn't. 1
是32位的。您如何使用结果不会影响该结果的生成方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)