1. C 语言中的类型转换
在 C 语言中,如果赋值运算符左右两侧的类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值的类型不一致时,就需要发生类型转化。
C 语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。
- 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败
- 显式类型转化:需要用户自己处理
C 语言中,意义相近的类型可以完成隐式类型转换。比如 int 和 double,它们都是表示数据大小。 但是指针和整型就不能完成隐式类型转换,但是可以强制转换,因为二者终归是有关联的。但是几乎没有关联的类型就不能转换了。
缺陷: 转换的可视性比较差,所有的转换形式都是以一种相同形式书写,难以跟踪错误的转换。
2. C++ 的类型转换
2.1 static_cast
C 语言隐式类型转换:
#include <iostream>
using namespace std;
int main() {
double d = 12.34;
int a = d;
cout << a << endl;
return 0;
}

C++ 的 static_cast:
#include <iostream>
using namespace std;
int main() {
double d = 12.34;
int a = static_cast<int>(d);
cout << a << endl;
return 0;
}









