你理解错了高位字节和低位字节。
首先a=256+69在编译之后编译器就预先计算了256+69为325,所以a=256+69和a=325是一样的;
325的二进制是:1 0100 0101 取低位字节(后位8)0100 0101=69 (E) ;所以 低位字节并不是说表达式的后面几个数,如果 表达式换成a=300+25 结果还是 E(69),而不是25;
在你的第二个问题中; ch='a+b' 语法是错的 单引号里面只能是一个字符,如果要给出字符串的话应该是:char *ch;ch="a+b"; ;如果你理解了上面的低位字节你不会有下面的疑问了
int是16位的,即最大值是2^16-1=65536
char是8位的,即最大值是2^8-1=255
所以把int型数据赋值给char型的时候,就会出现数据溢出,所以它只把低8位赋值给了char型;
如果冒的话,数据会循环的。例如char为255,那么256的话就会变成0的那个值。
这问题有意思,坐等待解!