#include <stdio.h>
int main()
{
unsigned int a = 2;
signed int b = -3;
printf(“%d\n”, a+b);
return 0;
}
结果输出:-1
a的二进制码为:
0000 0000 0000 0000 0000 0000 0000 0010
b的二进制码为:
原码
1000 0000 0000 0000 0000 0000 0000 0011
反码
1111 1111 1111 1111 1111 1111 1111 1100
补码
1111 1111 1111 1111 1111 1111 1111 1101
运算后得:
1111 1111 1111 1111 1111 1111 1111 1111
十六进制表示为0xFFFFFFFF
printf(“%d\n”,a+b),以%d有符号数输出,该结果为-1