字符型数据在内存中是以二进制形式存放的,并不是真正的把一个字符存进内存里。
在对字符型数据进行相加减运算的时候,系统会首先将char型数据以隐形的方式转化为int型数据再进行相加减运算。
修正: 对于char类型而言,其本质是8位的int类型,char类型表现与字符相关的特性也就是根据ascii的约定和接口决定的.
因此,由字符型数据在内存的存储方式来看,字符型数据在做数字运算时实际上是对字符本身对应的ASCII码进行相应的数值运算。
C++中的char类型确保可以存放机器基本字符集对应的数字值.也就是一个char类型的大小跟一个机器字节一样.
int与char之间可以转化
比如:
1 | (char) 整形 = 字符型; |
当你要读取一个char类型的ascii码
1 | char a = 'a'; |
当把一个char字符赋值给int变量的时候,会有一个隐式的转换,将该字符的ascii码赋给int变量
转换字符
1 | char a = '4'; |
有一个要点 : 字符和字符串实际上是数字,就像计算机中的一切.
当你写入‘a’时,它会被预处理成数字97,它是一个整数常量.
所以
1 | char ch = '5'; |
是等价的
然后通过C语言的整数提升
1 | ch = (int)ch - (int)48; |
然后截断为char以适合结果类型
1 | ch = (char)( (int)ch - (int)48 ); |