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
。