首页 > 解决方案 > 如何在 VS2019 中将 -0x80000000 分配给 long long 变量?

问题描述

我正在使用 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 值。我想念什么?

标签: visual-studioc++1764-bitsignednegative-integer

解决方案


没有后缀的整型文字有一些规则

简而言之,0x80000000' 类型unsigned int因为它是一个大于int' 最大值的十六进制数。为了让它长长,你必须添加LL后缀,即0x80000000LL


推荐阅读