如何在 VS2019 中将 -0x80000000 分配给 long long 变量?
How do I assign -0x80000000 to long long variable in VS2019?
我正在使用 Visual Studio 2019 社区版。我有以下 C++ 代码片段:
long long l = 0x80000000;
assert(l > 0); //true
l = -0x7fffffff;
assert(l < 0); // true
l = -0x80000000;
assert(l < 0); // FALSE
我希望 -0x80000000
最终符号扩展为 0xFFFFFFFF80000000 的 64 位值,但事实并非如此。相反,它带有正值 0x80000000。我想念什么?
没有后缀的整型字面量 rules。
简而言之,0x80000000
的类型是is unsigned int
,因为它是一个大于int
的最大值的十六进制数。为了让它变长,必须加上LL
后缀,即0x80000000LL
.
我正在使用 Visual Studio 2019 社区版。我有以下 C++ 代码片段:
long long l = 0x80000000;
assert(l > 0); //true
l = -0x7fffffff;
assert(l < 0); // true
l = -0x80000000;
assert(l < 0); // FALSE
我希望 -0x80000000
最终符号扩展为 0xFFFFFFFF80000000 的 64 位值,但事实并非如此。相反,它带有正值 0x80000000。我想念什么?
没有后缀的整型字面量 rules。
简而言之,0x80000000
的类型是is unsigned int
,因为它是一个大于int
的最大值的十六进制数。为了让它变长,必须加上LL
后缀,即0x80000000LL
.