C语言隐式/显式类型转换 | C++四种强制类型转换、类的隐式转换、explicit

本文介绍了C语言中的隐式和显式类型转换,包括可能的风险和精度丢失问题。在C++中,为了增强类型转换的可视性和安全性,引入了static_cast、reinterpret_cast、const_cast和dynamic_cast四种强制类型转换操作符。同时,文章讨论了类的隐式类型转换,特别是如何使用explicit关键字抑制构造函数定义的隐式转换,以及如何在需要时通过显式转换使用explicit构造函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


C语言类型转换

隐式类型转换

编译器在编译阶段自动进行,通常适用于相近的类型,如果不能转换则会编译失败。

何时发生隐式类型转换:

  • 在大多数表达式中,比int类型小的整数值提升为较大的整数类型
  • 在条件中,非布尔值转换成布尔类型
  • 初始化过程中,初始值转换成变量的类型;在赋值语句中,右侧运算对象转化成左侧运算对象的类型
  • 算术运算或关系运算对象有多种类型,需要转换成同一种类型
  • 函数调用时也会发生类型转换

显式类型转换

需要用户自己处理,通常用于不相近类型的转换。

int main()
{
   
   
	int i =