类型转换

编辑
本词条由“匿名用户” 建档。
在计算机科学中,类型转换、类型铸造、类型强制和类型杂耍是将一个表达式从一种数据类型变为另一种数据类型的不同方式。一个例子是将一个整数值转换为一个浮点值或其文本表示为一个字符串,反之亦然。类型转换可以利用类型层次结构或数据表示法的某些特征。类型转换的两个重要方面是它是隐式(自动)还是显式发生的,以及底层数据表示是否从一种表示转换为另一种表示,或者一个给定的表示只是被重新解释为另一种数据类型的表示...

类型转换

编辑

计算机科学中,类型转换、类型铸造、类型强制和类型杂耍是将一个表达式从一种数据类型变为另一种数据类型的不同方式。一个例子是将一个整数值转换为一个浮点值或其文本表示为一个字符串,反之亦然。类型转换可以利用类型层次结构或数据表示法的某些特征。类型转换的两个重要方面是它是隐式(自动)还是显式发生的,以及底层数据表示是否从一种表示转换为另一种表示,或者一个给定的表示只是被重新解释为另一种数据类型的表示。一般来说,原始和复合数据类型都可以被转换。每种编程语言都有自己的关于类型如何转换的规则。具有强类型的语言通常很少进行隐式转换,不鼓励重新解释表示,而具有弱类型的语言在数据类型之间进行许多隐式转换。弱类型语言通常允许强迫编译器将一个数据项任意解释为具有不同的表征--这可能是一个不明显的编程错误,或者是一个直接处理底层硬件的技术方法。

类型转换

例如,32个连续的位可以被当作一个32个布尔的数组、一个4字节的字符串、一个无符号的32位整数或一个IEEE单精度浮点值。由于存储的比特从未改变,程序员必须了解低层次的细节,如表示格式、字节顺序和对齐需求,才能有意义地进行转换。在C语言家族和ALGOL68中,cast这个词通常指的是明确的类型转换(而不是隐式转换),这就造成了一些歧义,即这是对比特模式的重新解释还是真正的数据表示转换。更重要的是适用于什么数据类型(或类)被指针定位的众多方式和规则,以及在像对象(类)继承的情况下指针如何被编译器调整。

语言比较

编辑

类C语言隐式类型转换隐式类型转换,也被称为强制或类型杂耍,是编译器的自动类型转换。有些编程语言允许编译器提供协整,有些则需要协整。在混合类型表达式中,一个或多个子类型的数据可以在运行时根据需要被转换为超级类型,以便程序正确运行。例如,下面是合法的C语言代码。doubled;longl;inti;如果(d>i)d=i;如果(i>l)l=i;如果(d==l)d*=2。尽管d、l和i属于不同的数据类型,但每次执行比较或赋值时,它们将被自动转换为相等的数据类型。这种行为应该谨慎使用,因为可能会出现意想不到的后果。从浮点转换为整数时,数据可能会丢失,因为浮点值的小数部分会被截断(四舍五入为零)。反之,从整数转换到浮点时,精度也会损失,因为浮点类型可能无法准确表示整数类型。例如,float可能是一个IEEE754单精度类型,它不能准确表示整数16777217,而32位整数类型可以。这可能会导致不直观的行为,正如下面的代码所展示的那样。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/170857/

(4)
词条目录
  1. 类型转换
  2. 语言比较

轻触这里

关闭目录

目录