printf的大数字

时间:2013-03-29 12:44:01

标签: c variables printf

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

为什么

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

不起作用?

2 个答案:

答案 0 :(得分:2)

打印无符号长整型的正确格式为%lu,而不是%u

答案 1 :(得分:0)

这取决于您的底层架构。如果你有一台32位机器你不能产生比2 ^ 31 - 1更大的整数。除此之外,即使32位机器也无法处理2 ^ 32而没有溢出,因为范围从-2 ^ 31到2 ^ 31 - 1.