visual-studio - 如何在 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 值。我想念什么?
解决方案
没有后缀的整型文字有一些规则。
简而言之,0x80000000
' 类型是unsigned int
因为它是一个大于int
' 最大值的十六进制数。为了让它长长,你必须添加LL
后缀,即0x80000000LL
。
推荐阅读
- flutter - 如何从 TextField 中删除内容填充?
- javascript - 如何在 jQuery datepicker 中获取所选月份的最后一天?
- pandas - 如何让 Pandas 将零排序到索引的开头?
- c# - 如何在 .net 核心中哈希密码等于 .net 框架
- android - 如何在没有 ActionBar 的片段中实现 SeachView
- javascript - 为什么 Vue.js 使用单字标签
,这违反了自己的风格指南? - algorithm - 如何判断两个序列是否因排列不同?
- python - 在 DataFrame pandas 中合并两列
- phpstorm - 如何在 PhpStorm 上使用 Codecept 和 Puppeteer 包
- python-3.x - 用于二维数组的 numpy loadtxt