收录日期:2018/06/20 09:30:13 时间:2016/05/20 21:31:55 标签:工具平台和程序库
二进制是11001110的char变量,用(int)强行转换后为什么是-50,而定义成unsigned char时则为206.

后者转换后为0x00 0x00 0x00 0xCE,前者应该是0x10 0x00 0x00 0x4E才对啊?
11001110 --> 1111 1111 1100 1110
符号位扩展

呵呵
你不妨把内存地址打出来看看
因为,这个 char 型分配的地址 未必是一个 偶数值
而 变成 int 型, 不仅仅 取内存
还进行 内存保护机制, 所以,会 改变地址 也说不定的
这时候, 就完全 不是你想要的结果了

这点, 请楼主 注意。
1100 1110 负数 
-> -1得补码
1100 1101 补码
-> 求反得源码
0011 0010 源码
->加下最高为1,即为负
-50