卵巢囊肿破裂出血:请问一个c语言的问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/12 11:03:37
void main()
{char c
c=`\376`;
printf("^%d",c)}

结果是-2
我不明白是怎么转的请会的帮帮忙,我是个初学者有关二进制原码,反码,补码如何转我了解的很少请多多指教谢谢!
请问怎么把二进制:11111110 转为-2请把反码怎么转为原码在怎么变为-2写的细些谢谢了,我对这个不太明白请细些

c=`\376`; 首先使用转义字符\ddd(三位八进制数DDD对应的ASCLL码字符)给字符型数据赋值,把8进制376化成二进制就是:11111110
printf("^%d",c);输出C时把C转换成int型,不管是32位还是16位,按照补位原则,高位应该都补1,在16位情况下结果是:1111111111111110,由于int类型是以反码存的,把1111111111111110(或11111110或11111111111111111111111111111110)转成正码都是-2(减1取反)。
所以输出应该是-2;

上面说得很对

不灭说得很好。