在计算机科学,特别是在程序设计语言中,类型转换()指将数据从一种类型转换到另一种类型的过程。一个简单的例子是将整数转换成浮点数。
分类和例子
类型转换包括显式指定被转换到的类型的显式转换(explicit cast)(或称铸型(cast)),以及与之相对的隐式转换(implicit conversion)。其中,后者在一些语言中也被称为强制(coercion),被认为是一种特设多态机制。因为翻译不准确等原因,这两者之间的对应常被混淆。例如,C语言中的显式类型转换被误作为“强制转换”,这是技术上不正确的(事实上C语言的规范中完全没有“强制”的说法,但明确地有显式和隐式转换)。
一些语言中可能同时提供这些不同形式的典型的类型转换,以及其它的可能和上下文相关的类型转换,例如ISO C++的[http://eel.is/c++draft/meta.rel#5 std::is_convertible使用的“转换”] ,既不是类似C语言的[http://eel.is/c++draft/expr.cast cast notation] 或[http://eel.is/c++draft/expr.post 前缀的转换操作符形式] 的显式转换,也不是[http://eel.is/c++draft/conv#1 标准转换] 这样的隐式转换。
外部链接
- [http://help.sap.com/abapdocu_70/en/ABENCAST_CASTING_GLOSRY.htm Casting in ABAP]
- [http://www.adapower.com/index.php?Command=Class&ClassID=FAQ&CID=354 Casting in Ada]
- Casting in C++
- [https://web.archive.org/web/20160709112746/http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=285 C++ Reference Guide] Why I hate C++ Cast Operators, by Danny Kalev
- [https://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.5 Casting in Java]
- [http://msdn.microsoft.com/en-us/library/aa691280(v=vs.71).aspx Implicit Conversions in C#]
- [http://cppreference.com/wiki/language/implicit_cast Implicit Type Casting at Cppreference.com]
- [http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/cast.html Static and Reinterpretation castings in C++]
- Upcasting and Downcasting in F#
评论 (0)