回复 6楼 死穴
骚年,
char是一个字节的 -128~127
unsigend char是一个无符号变量 0~255
接下来请自行补习补码的知识在看;
简单的说char的%d范围是-128~127; 197,198超过了它%d的范围,所以本身这个赋值严格来说是不可取的;
所以要抛弃197和198二进制的高8位;
变成了
1100 0101 (强制转换成char 只有剩下的低8位留了下来)
1100 0110
因为是char也是无符号的范围是最高位就代表正负;
所以:
(1代表负 100 0101)补码为=> 011 1011 => 32+16+8+2+1 => 真正有效的数59
同理(1代表负 100 0110)真正有效的数58