Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我必须编写一个计算一些值的 C 程序。实际上应该没有问题,我的程序适用于小数字,但是当我尝试打印像 2^32 这样的大数字时,它就不起作用了。好的,我知道整数变量是 2^32 位大,但我不能使用 long 变量或 unsigned long 变量吗?
为什么
unsigned long erg = pow(2,32); printf(%u, erg);
不行?
打印 unsigned long 的正确格式是%lu, not%u
%lu
%u
这依赖于你的底层架构。如果您有一台 32 位机器,则无法生成大于 2^31 - 1 的整数。除此之外,即使 32 位机器也无法处理 2^32 而不会溢出,因为范围从 -2^31 到2^31 - 1。