unsigned int 与 int 间的区别

unsigned int 是无符号整型,要求定义的整数一定是正整数。

当把一个负数赋值给无符号整型的变量的时候,会自动把最高位的符号位看成整数的一部分。

例如:

unsigned int a = -10;
printf("%u", a);

结果为

因为-10的在计算机中存储的补码为1111 1111 1111 1111 1111 1111 1111 0110

当计算不把最高位当作符号位,默认这是个正整数的时候,正整数的原、反、补码相同。

而这个二进制数对应的十进制数就是4294967286