-1

我必须编写一个计算一些值的 C 程序。实际上应该没有问题,我的程序适用于小数字,但是当我尝试打印像 2^32 这样的大数字时,它就不起作用了。好的,我知道整数变量是 2^32 位大,但我不能使用 long 变量或 unsigned long 变量吗?

为什么

unsigned long erg = pow(2,32);
printf(%u, erg);

不行?

4

2 回答 2

2

打印 unsigned long 的正确格式是%lu, not%u

于 2013-03-29T12:47:17.670 回答
0

这依赖于你的底层架构。如果您有一台 32 位机器,则无法生成大于 2^31 - 1 的整数。除此之外,即使 32 位机器也无法处理 2^32 而不会溢出,因为范围从 -2^31 到2^31 - 1。

于 2013-03-29T12:49:16.883 回答