int与char类型的联系

字符型数据在内存中是以二进制形式存放的,并不是真正的把一个字符存进内存里。

在对字符型数据进行相加减运算的时候,系统会首先将char型数据以隐形的方式转化为int型数据再进行相加减运算。

修正: 对于char类型而言,其本质是8位的int类型,char类型表现与字符相关的特性也就是根据ascii的约定和接口决定的.

因此,由字符型数据在内存的存储方式来看,字符型数据在做数字运算时实际上是对字符本身对应的ASCII码进行相应的数值运算。

C++中的char类型确保可以存放机器基本字符集对应的数字值.也就是一个char类型的大小跟一个机器字节一样.

int与char之间可以转化

比如:

1
2
(char) 整形 = 字符型;
(int) 字符型 = 整形;

当你要读取一个char类型的ascii码

1
2
char a = 'a';
int ia = (int)a;

当把一个char字符赋值给int变量的时候,会有一个隐式的转换,将该字符的ascii码赋给int变量

转换字符

1
2
char a = '4';
int ia = a - '0';

有一个要点 : 字符和字符串实际上是数字,就像计算机中的一切.

当你写入‘a’时,它会被预处理成数字97,它是一个整数常量.

所以

1
2
3
4
5
char ch = '5';
ch = ch - '0';

char ch = (int)53;
ch = ch - (int)48;

是等价的

然后通过C语言的整数提升

1
ch = (int)ch - (int)48;

然后截断为char以适合结果类型

1
ch = (char)( (int)ch - (int)48 );
script>