从
char
到
int
属于“从短到长”的转换,而从
int
到
char
则为“从长到短”的转换。
短到长时,系统会自动提升,会将1个字节的char类型数据扩充到4个字节(32位系统),对于无符号类型来说,只将int的最低字节复制为char的值,其余三个字节都为0。
长到短时,只将int的最低字节的内容复制到char类型的变量,三个高位字节被忽略,这在编译时会给出警告,但通过强制类型转换则可以避免警告出现,如
char
ch
=
(char)intvar。
在ASCII码中数字'0'-'9'的编码是48
-
57,所以你减一个'0',或者减一个48都可以。