什么是类型转换?

类型转换是一种采用一种类型的数据对象并创建多种类型的等效数据对象的操作。类型转换操作的签名为

                   转换操作:type1→type2

有两种类型的类型转换,如下所示 -

  • 隐式类型转换(强制) - 启用混合模式表达式的编程语言应该描述隐式操作数类型转换的约定。

强制定义为类型之间的自动转换。例如在 Pascal 中,如果加法运算的操作数是整数类型和其他实数类型,那么在实现加法之前,整数数据对象之一被隐式更改为实数类型。

  • 显式类型转换- 某些语言支持进行显式转换的效率很低,包括扩大和缩小。在某些情况下,当显式缩小转换导致正在修改的对象的值发生有意义的更改时,会创建警告消息。

例如,Pascal 支持内置函数 round,它将实数数据对象更改为整数数据对象,其值类似于实数的舍入值。在基于 C 的语言中,显式类型转换称为强制转换。所需类型仅位于要修改的表达式之前的括号中,如 (int) X for float X 将 X 的值转换为整数类型。C 转换中括号的原因之一是 C 有几个两个字的类型名称,例如 long int。

类型转换的优势

类型转换有以下优点:

  • 如果在类型检查期间,参数的实际类型与该操作的预期类型之间出现不匹配,则类型转换可以轻松地隐式转换数据对象并防止错误。

  • 在某些语言(如 C)中,类型转换是一个内置函数,它隐式转换表达式以将其转换为正确的类型。

  • 在某些不匹配的情况下会自动调用类型转换。例如,在 Pascal 中,如果包括“+”在内的算术运算的参数是实数和整数类型的混合类型,则在实现加法之前,整数数据对象会隐式转换为实数类型。

  • 没有数据被隐藏。因为每个短整数都可以定义为长整数,所以没有必要通过调用短整数→长整数来隐藏数据。

  • 通过动态类型检查,在执行期间识别出类型不匹配时构建转换或强制。对于此类语言,可以启用缩小转换。对于静态类型检查,更多的代码被添加到编译的程序中。

  • 当编程语言中存在大量数据类型时,类型转换是一种字幕需求。