类型转换
C中的类型转换
C语言中的类型转换分为隐式类型转换和强制类型转换两种。
#include <stdio.h>
int main()
{
//隐式类型转换
int i = 10;
double d = i;
printf("%d, %.2lf\n", i, d);
//强制类型转换
i = (int)d;
printf("%d, %.2lf\n", i, d);
}
这种从C中继承而来的类型转换方式十分不直观,可视性较差,不便于我们在发生错误时查找错误。
为了解决这种问题,于是Cpp中新诞生了四种更加直观更加安全的类型转换操作。
Cpp中的类型转换
static_cast
static_cast
用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用static_cast
,但它不能用于两个不相关的类型进行转换。
#include <iostream>
int main()
{
double d = 10.2;
int i = static_cast<int>(d);
std::cout << "d:" << d << " i:" << i << std::endl;
}
d:10.2 i:10
static_cast