草庐IT

xFFFFFFFFFFFFFFFF

全部标签

c++ - 在 C++ 中将 64 位值左移 64 位给出奇怪的结果

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:64bitshiftproblem我在Windows864位上使用VisualStudio2012,在Debug模式下以x64为目标,使用AMDPhenomII。所以基本上...uint64_tFoo=0xFFFFFFFFFFFFFFFF使用较低的值(例如63)可恢复正常行为。为什么会发生这种情况,我该如何解决?更新:我切换到Release模式。你瞧,问题消失了,并且都返回了0。但是问题仍然处于Debug模式,这是我需要进入的位置才能调试我的代码。

c++ - C 预处理器在多大程度上考虑整数文字后缀?

今天,我偶然发现了这样的事情:#defineFOO2u#if(FOO==2)unsignedintfoo=FOO;#endif不管代码为何如此(让我们不要质疑为什么),我想知道预处理器甚至可以在多大程度上处理整数文字后缀。我真的很惊讶它能起作用。用GCCandC99做了一些实验后使用此代码...#includeintmain(){#if(1u==1)printf("1u==1\n");#endif#if(1u+1l==2ll)printf("1u+1l==2ll\n");#endif#if(1ull-2u==-1)printf("1ull-2u==-1\n");#endif#if(1u

c++ - (uint64_t)-1 是否保证产生 0xffffffffffffffff?

我知道,C标准很好地定义了(unsigned)-1必须产生2^n-1,即。e.一个无符号整数,其所有位都已设置。(uint64_t)-1ll也是如此。但是,我在C11标准中找不到指定如何解释(uint64_t)-1的内容。那么,问题是:C标准中是否有任何保证,以下哪项成立?(uint64_t)-1==(uint64_t)(unsigned)-1//0x00000000ffffffff(uint64_t)-1==(uint64_t)(int64_t)-1//0xffffffffffffffff 最佳答案 是的。请参阅C116.3.1.