前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】类型转换 ② ( C++ 静态类型转换 static_cast | C 语言隐式转换弊端 | 代码示例 )

【C++】类型转换 ② ( C++ 静态类型转换 static_cast | C 语言隐式转换弊端 | 代码示例 )

作者头像
韩曙亮
发布2023-11-27 10:22:06
2550
发布2023-11-27 10:22:06
举报
文章被收录于专栏:韩曙亮的移动开发专栏

一、静态类型转换 static_cast


1、C++ 静态类型转换 static_cast

C++ 中的 static_cast 静态类型转换 , 是使用频率最高的 类型转换 操作符 ,

使用 该 静态类型转换 时 , 在编译器进行静态编译时 , C++ 编译器会进行 类型检查 , 如果 出现类型错误 , 编译时会进行提示报错 ;

与之相对的事 , C 语言中如果可以进行隐式类型转换 , 如果使用 C++ 的静态类型转换 , 在 C++ 编译器 编译时会进行类型检查 , 如果有错编译不通过 , 这样不容易出错 ;

C++ 静态类型转换示例 :

代码语言:javascript
复制
	double pi = 3.14;

	// C++ 中的 静态类型转换
	// 静态编译时 , C++ 编译器会进行 类型检查
	// C 语言中如果可以进行隐式类型转换 , 如果使用 C++ 的静态类型转换
	//	此时在 C++ 编译器 编译时会进行类型检查 , 如果有错编译不通过 , 这样不容易出错
	int num3 = static_cast<int> (pi);

2、C 语言隐式转换弊端

使用 C++ 静态类型转换 static_cast 可以避免 C 语言 隐式转换的 弊端 ;

使用 C 语言的 隐式 强制类型转换 ,

代码语言:javascript
复制
	// C 语言中 隐式类型转换 赋值时自动转换
	int num = pi;

在 编译器 编译时 , 会报如下警告 ,

代码语言:javascript
复制
严重性	代码	说明	项目	文件	行	禁止显示状态
警告	C4244	“初始化”: 从“double”转换到“int”,可能丢失数据	HelloWorld	Y:\002_WorkSpace\002_VS\HelloWorld\HelloWorld\Test.cpp	9	
在这里插入图片描述
在这里插入图片描述

使用 C 语言 的 显示类型转换 手动强制转换 , 和 使用 C++ 的 静态类型转换 , 不会出现警告 ;

在这里插入图片描述
在这里插入图片描述

3、代码示例

代码示例 :

代码语言:javascript
复制
#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;
};

执行结果 :

代码语言:javascript
复制
请按任意键继续. . .
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、静态类型转换 static_cast
    • 1、C++ 静态类型转换 static_cast
      • 2、C 语言隐式转换弊端
        • 3、代码示例
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档