c 语言中 unsigned int 类型的负数实际值大小

一 在c 语言中 unsigned int 类型的负数实际值大小

#include <stdio.h>

int main() {
    int a = 5;
    printf("a: %d\n", a);
    unsigned int b = a - 10;
    printf("b: %d\n", b);
    printf("%d\n", b == 4294967291);  // unsigned int -5 = 4294967291
    return 0;
}

在C或C++中,unsigned int 是无符号整数类型,它不能表示负数。在你的代码中,a - 10 的结果是 -5,但由于使用了 unsigned int,负数会被解释为很大的正整数。

对于无符号整数 unsigned int,负数会被转换成该类型的最大正整数减去相应的绝对值。在32位系统中,unsigned int 的最大值是4294967295,所以 -5 会被解释为 4294967295 - 5 + 1,即 4294967291

所以,b 的值将是 4294967291

猜你喜欢

转载自blog.csdn.net/March_A/article/details/134621140
今日推荐