可能重复:
64bit shift问题
我在 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。但问题仍然处于调试模式,这是我需要调试代码的地方。