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;
}
上面代码的输出如下:

#include <cstdio>
#include <iostream>
#include <typeinfo>
using namespace std;
int main()
{
printf("'a' + 1 type: %s", typeid('a'+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: %s\n", typeid(b).name());
printf("b is %c", b);
return 0;
}
结果为

本文深入探讨了C++中字符型变量与整型变量进行算术运算的原理,解释了为何字符能与整数相加减,并通过代码示例展示了数据类型的自动转换过程。

6261

被折叠的 条评论
为什么被折叠?



