char 的等级没有int 的高(通俗解释,也就是开辟的内存空间没有int的大)
所以当char类型的a 与 int 类型的 10相加时,a会自动提升为int型,所以2.的右边实际上是int型,但是等号左边却是char型,等级高的不能自动转换成等级低的,所以2会出错
也就是 (char)a = (char)a + (int)10 ; 右边的结果是int ,左边的变量是char
关于3.的运行原理好像是,想把a的值转换成ascii值,然后和10相加,所以不会报错 , a对应的ascii值是97,所以可以和10相加!!
原来应该是这样,有说的不对的,希望高人指正~!
|