C++ 中的 static_cast 静态类型转换 , 是使用频率最高的 类型转换 操作符 ,
使用 该 静态类型转换 时 , 在编译器进行静态编译时 , C++ 编译器会进行 类型检查 , 如果 出现类型错误 , 编译时会进行提示报错 ;
与之相对的事 , C 语言中如果可以进行隐式类型转换 , 如果使用 C++ 的静态类型转换 , 在 C++ 编译器 编译时会进行类型检查 , 如果有错编译不通过 , 这样不容易出错 ;
C++ 静态类型转换示例 :
double pi = 3.14;
// C++ 中的 静态类型转换
// 静态编译时 , C++ 编译器会进行 类型检查
// C 语言中如果可以进行隐式类型转换 , 如果使用 C++ 的静态类型转换
// 此时在 C++ 编译器 编译时会进行类型检查 , 如果有错编译不通过 , 这样不容易出错
int num3 = static_cast<int> (pi);
使用 C++ 静态类型转换 static_cast 可以避免 C 语言 隐式转换的 弊端 ;
使用 C 语言的 隐式 强制类型转换 ,
// C 语言中 隐式类型转换 赋值时自动转换
int num = pi;
在 编译器 编译时 , 会报如下警告 ,
严重性 代码 说明 项目 文件 行 禁止显示状态
警告 C4244 “初始化”: 从“double”转换到“int”,可能丢失数据 HelloWorld Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Test.cpp 9
使用 C 语言 的 显示类型转换 手动强制转换 , 和 使用 C++ 的 静态类型转换 , 不会出现警告 ;
代码示例 :
#include "iostream"
using namespace std;
int main() {
double pi = 3.14;
/*
I. C 语言类型转换
*/
// C 语言中 隐式类型转换 赋值时自动转换
int num = pi;
// C 语言中 显示类型转换 手动强制转换
int num2 = (int)pi;
/*
II. C++ 类型转换
*/
// C++ 中的 静态类型转换
// 静态编译时 , C++ 编译器会进行 类型检查
// C 语言中如果可以进行隐式类型转换 , 如果使用 C++ 的静态类型转换
// 此时在 C++ 编译器 编译时会进行类型检查 , 如果有错编译不通过 , 这样不容易出错
int num3 = static_cast<int> (pi);
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
请按任意键继续. . .
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有