我不能将 4294967295 存储在 unsigned int 中吗? Int 在我的机器上是 4 个字节

2024-01-02

为什么我得到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(使用前将#替换为@)

我不能将 4294967295 存储在 unsigned int 中吗? Int 在我的机器上是 4 个字节 的相关文章

随机推荐