#include
int main()
{
char c =256;
printf("c=%d",c);
return 0;
}
输出结果是-1;
可以这么理解是:
255 存入计算机是补码1111 1111;
输出时,最高位是符号位,1表示负数,其余7位按补码求真值法则是取反+1,即000 0001;和符号位全合起来就是1000 0001,是-1。
那输入128时,按这种方法计算应该是1000 0000,1表示负数,其余7位按补码求真值法则是取反+1,即111 1111+1=1000 0000;这还是128;
为什么程序会输出-128呢