【C++】类型转换 ② ( C++ 静态类型转换 static_cast | C 语言隐式转换弊端 | 代码示例 )
  K1I6GvxBEuyy 2023年12月15日 110 0



文章目录

  • 一、静态类型转换 static_cast
  • 1、C++ 静态类型转换 static_cast
  • 2、C 语言隐式转换弊端
  • 3、代码示例




在之前写过一篇 C++ 类型转换的博客 【C++ 语言】类型转换 ( 转换操作符 | const_cast | static_cast | dynamic_cast | reinterpret_cast | 字符串转换 ) , 简单介绍了 C++ 类型转换 ;

在 博客 【C++】类型转换 ① ( C 中的类型转换 | C++ 类型转换操作符 | const_cast | static_cast | dynamic_cast | reinterpret_cast ) 将 C 语言 和 C++ 中的类型转换进行了对比 ;






一、静态类型转换 static_cast




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



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

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

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



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

double pi = 3.14;

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



2、C 语言隐式转换弊端



使用 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++ 静态类型转换 static_cast | C 语言隐式转换弊端 | 代码示例 )_静态类型转换



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

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


3、代码示例



代码示例 :

#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;
};

执行结果 :

请按任意键继续. . .

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


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月15日 0

暂无评论

推荐阅读
  BYaHC1OPAeY4   2024年05月08日   54   0   0 C++
  TKwJ4YzyA8uz   2024年05月17日   41   0   0 C语言
  V88gxnVgnp1F   2024年05月08日   90   0   0 C语言
  6Df3JnWQUC5m   2024年05月08日   81   0   0 C语言
  o1ZcTI9mJsxK   2024年05月08日   120   0   0 C语言
  6Df3JnWQUC5m   2024年05月17日   51   0   0 C语言
  yZdUbUDB8h5t   2024年05月05日   41   0   0 C++
  oXKBKZoQY2lx   2024年05月17日   54   0   0 C++
K1I6GvxBEuyy
作者其他文章 更多