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