如何解决如何在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
最终以符号扩展为64位值0xFFFFFFFF80000000,但事实并非如此。相反,它带有0x80000000正值。我想念什么?
解决方法
有rules表示不带后缀的整数。
简而言之,0x80000000
的类型为is unsigned int
,因为它是一个大于int
的最大值的十六进制数。为了使其长久,必须添加LL
后缀,即0x80000000LL
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。