什么是类型转换?


类型转换是一种操作,它接收一种类型的数据对象,并创建多个类型的等效数据对象。类型转换操作的签名如下所示:

                   conversion_op :type1→type2

类型转换主要分为以下两种:

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

强制转换定义为类型之间的自动转换。例如,在 Pascal 中,如果加法操作的操作数是整数类型和其他实数类型,则在执行加法之前,其中一个整数数据对象会隐式转换为实数类型。

  • 显式类型转换 − 一些语言支持一些执行显式转换(扩展和缩小)的效率方法。在某些情况下,当显式缩小转换导致被修改对象的数值发生有意义的变化时,会生成警告消息。

例如,Pascal 支持一个内置函数 round,它将实数数据对象转换为整数数据对象,其值类似于实数的四舍五入值。在基于 C 的语言中,显式类型转换称为强制类型转换。所需类型位于要修改的表达式之前的括号中,例如,对于浮点数 X,(int) X 将 X 的值转换为整数类型。C 转换中使用括号的原因之一是 C 有一些由两个单词组成的类型名称,例如 long int。

类型转换的优点

类型转换具有以下优点:

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

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

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

  • 没有数据被隐藏。因为每个短整数都可以定义为长整数,所以通过调用 short int→long int 不会隐藏任何数据。

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

  • 当编程语言中存在大量数据类型时,类型转换是一个必要的补充。

更新于:2021年10月22日

17K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告