unsigned和signed转换问题
写了段小code测试,代码如下:
1 #include <stdio.h>
2 int main()
3 {
4 char B=172,C;
5 unsigned char uB=172,uC;
6 C=~B;
7 uC=~uB;
8 printf("signed: %d %d\n",B,C);
9 printf("unsigned:%d %d\n",uB,uC);
10 return 0;
11 }
-------------------------------------------------
运行结果:
signed: -84 83
unsigned:172 83
-------------------------------------------------
为啥都是172,转成int就变了??
我取反后,发现在内存中B和uB应该是一样的啊。
敢问各位大侠这种牵涉到unsigned到signed的转换到底是怎样进行的?