gpt4 book ai didi

c++ - unsigned long 不能容纳超过 2,147,483,647 的正确数字

转载 作者:行者123 更新时间:2023-12-01 14:02:57 26 4
gpt4 key购买 nike

源代码:

#include <iostream>
using namespace std;
int main() {
unsigned long P;

P = 0x7F << 24;
cout << P << endl;

P = 0x80 << 24;
cout << P << endl;

return 0;
}

输出:
2130706432
18446744071562067968

如您所见,第一个结果是正确的。
但是第二个结果是极其错误的。
预期结果为 2147483648,与 18446744071562067968 不匹配。

我想知道为什么

最佳答案

表达式 0x80 << 24 的类型不是 unsigned long ,而是 int 。然后将该表达式的结果分配给 P ,并在此过程中将其转换为 unsigned long 。但那时它已经溢出(顺便导致未定义的行为)。在表达式中使用 unsigned long 文字:

P = 0x80ul << 24;

关于c++ - unsigned long 不能容纳超过 2,147,483,647 的正确数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60455240/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com