一 在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 = 4294967291return 0;
}
在C或C++中,unsigned int 是无符号整数类型,它不能表示负数。在你的代码中,a - 10 的结果是 -5,但由于使用了 unsigned int,负数会被解释为很大的正整数。
对于无符号整数 unsigned int,负数会被转换成该类型的最大正整数减去相应的绝对值。在32位系统中,unsigned int 的最大值是4294967295,所以 -5 会被解释为 4294967295 - 5 + 1,即 4294967291。
所以,b 的值将是 4294967291。