gpt4 book ai didi

c++ - 为什么这段代码不能正常打印数字?

转载 作者:太空宇宙 更新时间:2023-11-04 14:41:21 24 4
gpt4 key购买 nike

为什么我会得到两个不同的结果? Unsigned long 足以处理这样的数字,它不可能是某种溢出,对吧?

我故意让它以十进制形式显示,但它不起作用。

可能是什么原因?

#include <iostream>
using namespace std;
void Print(unsigned long num)
{
cout<<dec<<num<<endl;
}
int main()
{
Print(9110865112);
cout<<dec<<9110865112;
return 0;
}

编辑

输出:

520930520
9110865112

最佳答案

unsigned long 并不总是足够大。对于 32 位,它可以占用从 0 到 232-1 的整数,这大约是四十亿。 9'110'865'112 是九十亿,因此不适合 unsigned long

尝试输出 sizeof unsigned long 看看你得到了什么。

此外,请考虑您的输出:9110865112 mod 232 is 520930520,这基本上证明了 unsigned long在你的机器上是 32 位大。

关于c++ - 为什么这段代码不能正常打印数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27490244/

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