我必须编写一个计算某些值的C程序。实际上应该没有问题,我的程序适用于小数字,但是当我尝试打印像2 ^ 32这样的大数字时,它不起作用。好的我知道整数变量是2 ^ 32位大,但我不能使用长变量或无符号长变量吗?
为什么
unsigned long erg = pow(2,32);
printf(%u, erg);
不起作用?
答案 0 :(得分:2)
打印无符号长整型的正确格式为%lu
,而不是%u
答案 1 :(得分:0)
这取决于您的底层架构。如果你有一台32位机器你不能产生比2 ^ 31 - 1更大的整数。除此之外,即使32位机器也无法处理2 ^ 32而没有溢出,因为范围从-2 ^ 31到2 ^ 31 - 1.