【发布时间】:2012-08-05 14:52:59
【问题描述】:
可能重复:
64bit shift problem
我在 Windows 8 64 位上使用 Visual Studio 2012,在调试模式下以 x64 为目标,使用 AMD Phenom II。
所以基本上...
uint64_t Foo = 0xFFFFFFFFFFFFFFFF << 64;//Foo is now 0x0000000000000000
uint64_t Derp = 64;
uint64_t Bar = 0xFFFFFFFFFFFFFFFF << Derp;//Foo is now 0xFFFFFFFFFFFFFFFF
使用较低的值(例如 63)可以恢复正常行为。
为什么会发生这种情况,我该如何解决?
更新:我切换到发布模式。瞧,问题消失了,都返回了 0。但问题仍然处于调试模式,这是我调试代码所需的位置。
【问题讨论】:
标签: c++ 64-bit bit-manipulation shift