如下图所示,为什么char C2=400,运行出的C2是?和-112

img


char C2=400时,为什么整型变量C2是-112而不是144呢?求C2的理解过程,谢谢各位!

321和400不是可见字符啊
另外都超过了char的取值范围
400首先大于256,会溢出,实际只有400-256=144
但由于char是有符号型,取值范围是-128到128,由于144不在这个范围,如果用二进制表达,144的最高位是1,会被认为是负数。负数值实际等于144-256=-112

char C2=400,char使用有符号还是无符号由编译器决定的。
400的二进制 0001 1001 0000,char装不下,截掉后剩 1001 0000,最高位作为符号位,1为负数。结果就是-112