为什么我得到0?和编译器警告:
格式“%d”需要“int”类型的参数,但参数 3 的类型为“long unsigned int”
这是代码:
#include <stdio.h>
//function declerations...
int power(int base, int on);
int main(void) {
printf("%d",power(2, sizeof(int)*8)-1);
return 0;
}
int power(int base, int on) {
int pf = 1;
for (int i = 0; i < on; i++) {
pf *= base;
}
return pf;
}
如果 int 在我的系统上是 4 个字节,iguess我应该能够将 4294967295 存储在unsigned int.
If your int
or unsigned int
是32位的,都不能存储值4294967296
因为这是2**32
这需要 64 位类型。
Even uint32_t
只能存储最大值2**32 - 1
所以你的价值只是1
超出范围。
But int32_t
可存储最大正值2**31 - 1
所以签名类型更进一步。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)