求解C语言如何取反+1求解的?

来源:百度知道 编辑:UC知道 时间:2024/06/10 04:12:26
帮我看道题::::void main()
{ char c;
c='\376';
printf("%c,%d\n",c,c)"
}

的结果为什么是-2
详细过程是什么呢??
为什么编译器将它理解为负数并且是补码形式??什么时候用取反加1呢??我是初学者,能详细解答吗?

c='\376';用这种方法的话转义编码是八进制数
这个376是八进制数,化为十进制是254,二进制为11111110,char的表示范围是-128~127,编译器将它理解为负数并且是补码形式,如化成原码,符号位1不变,后7位取反,最后加1,得到原码10000010,这就是-2