四种情况下的隐式转换
- 算术运算式中,低类型能够转换为高类型。
- 赋值表达式中,右边表达式的值自动隐式转换为左边变量的类型,并赋值给他。
- 函数调用中参数传递时,系统隐式地将实参转换为形参的类型后,赋给形参。
- 函数有返回值时,系统将隐式地将返回表达式类型转换为返回值类型,赋值给调用函数。
算术运算中的隐式转换
验证代码
#include <iostream>
#include <typeinfo>
using namespace std;
int main() {
cout << "typeof(char)= " << typeid(char).name() << endl;
cout << "typeof(short)= " << typeid(short).name() << endl;
cout << "typeof(int)= " << typeid(int).name() << endl;
cout << "typeof(unsigned int)= " << typeid(unsigned int).name() << endl;
cout << "typeof(float)= " << typeid(float).name() << endl;
cout << "typeof(double)= " << typeid(double).name() << endl;
char a = 'a';
short b = 10;
int c = -10;
unsigned int d = 20;
float e = 1.1;
double f = 1.2;
cout << "typeof(char + short)= " << typeid(a + b).name() << endl;
cout << "typeof(short + int)= " << typeid(b + c).name() << endl;
cout << "typeof(int + unsiged int)= " << typeid(c + d).name() << endl;
cout << "typeof(unsigned int + float)= " << typeid(d + e).name() << endl;
cout << "typeof(float + double)= " << typeid(e + f).name() << endl;
cout << "typeof(unsigned int + double)= " << typeid(d + f).name() << endl;
return 0;
}
运行结果
参考
在算术表达式中是否会将double隐式转换为unsigned int?