C++中字符型变量与整型的算术运算 字符型变量与整型的算术运算C++中算术运算中的精度下面的代码展示了上面表达式中类型的转换数据类型的自动转换
字符型变量与整型的算术运算
最近在学习C++,经常碰到字符与整数的加减,如:char b = ‘a’+1,碰到这种比较容易蒙,b的结果是什么呢?为啥字符可以与整数相加减呢?
C++中算术运算中的精度当几个数一起做算术运算时,如:加、减、乘、除、求模等,以其中精度高的类型为准。也就是说其中精度低的类型会先转化成精度高的类型。这样开头那个表达式中’a’+1,‘a’为字符型,1为整型,所以会先把‘a’转换成int型,也就是97,这时整个表达式的结果就是整型97+1=98。
下面的代码展示了上面表达式中类型的转换 #include <cstdio>#include <iostream>#include <typeinfo>using namespace std;int main(){printf("1 type: %s", typeid(1).name());return 0;}上面代码的输出如下:
上面代码输出结果:
可见表达式的类型已经变为了与1相同的int型。
C++中有些数据类型是可以相互进行赋值的,赋值时会进行数据类型的自动转换。因此在我们最开始的表达式char b = ‘a’+1中,就会把’a’+1表达式的int型自动转换成char型再赋值给char型变量b。所以b的最终值就为字符’b’。
#include <cstdio>#include <iostream>#include<typeinfo>using namespace std;int main(){char b = 'a' + 1;printf("'b type: %sn", typeid(b).name());printf("b is %c", b);return 0;}结果为