Topic: type conversion

topics > computer science > data > Group: data type

type inheritance

casting a variable to a different type
data type compatibility
dynamic type checking
function call
object and value equivalence
real numbers and floating point numbers
restricted and extended types
structural equivalence vs. name equivalence of data types
translation of data
type hierarchy
type inheritance as reuse
weak vs. strong type checking
XML data type


Values can be converted to equivalent types before use. For instance 12 inches converts to 1 foot, the letter 'A' converts to an ascii 61h, and the integer 1 converts to the real number 1.000. Type conversion may be a simple renaming. For instance a boolean 'false' and the integer 0 frequently have the same representation, or a list element may be an integer atom, or an indirect reference may be replaced by the referenced object.

Type conversion is needed for convenience but it weakens a type system. It is particularly needed for mixed mode arithmetic and constants. Alternatives to type conversions are explicitly typed constants and conversion indicators. (cbb 5/80)

Subtopic: conversion as part of data type up

Note: a conversion is a form of typing; e.g., 'a(x)' can be interpreted as 'x is an a -- here's how' [»stroB_1991, OK]
QuoteRef: wegbB5_1974 ;;27 type conversion as a component of a structure based on modes and converi

Subtopic: inheritance up

Quote: 'void*' is the root of the tree of class conversions; it is used if no other function matches a "more derived" class [»stroB_1994]
Quote: assigning an extended type to a base type copies the shared fields only [»wirtN7_1988]

Subtopic: structure conversion up

Quote: C++ defines layout compatibility rules for structurally equivalent objects; allows explicit conversions for low-level services

Subtopic: string conversion as portable representation up

Quote: SUIT uses string conversion to save data types and to convert between types [»pausR10_1992, OK]

Subtopic: unit conversion up

Quote: units define equivalent values between two value sets [»chenPP3_1976]
Quote: MicroTool converts engineering values into computer values with a scale factor, bias, and treatment of fractional units [»elshJL1_1991]

Subtopic: endian conversion up

Quote: efficient and optimal MD4-like hash functions on a Pentium processor; non-cached data and endianness conversion are not expensive [»bossA8_1996]

Subtopic: boolean conversion up

QuoteRef: sammJE_1969 ;;223 function to convert booleans to 1 or O

Subtopic: cast and coercion up

Quote: C's cast operator forces a conversion from one data type to another [»ritcDM7_1978c]
Quote: coercions added to C++ because of natural mappings and use of mixed-mode arithmetic in numerical work [»stroB5_1989]
Quote: typetest operators to test literals; e.g., 'isn x' is true if x is a number [»wirtN1_1966]
Quote: conversion operators to convert values; e.g., 'real x' produces a real number
Quote: use explicit conversion operators to avoid ambiguities; use implicit conversions for frequently used conversions [»stroB_1991]

Subtopic: safe conversion up

QuoteRef: schuSA_1970 ;;14 mode conversions eg mode complex is [real rp, real ip] with from real by x.[x, 0.0]
Quote: a transferable data type can be converted to another format with no type checking [»morrJH_1974, OK]

Subtopic: correctly rounded conversion up

Quote: efficient algorithm for correctly rounded decimal-to-binary conversion; avoids high-precision arithmetic 99.6% of the time [»clinWD6_1990]

Subtopic: mixed precision up

Quote: strict evaluation is wrong for mixed precision expressions; e.g., 7.0/3.0*d should be all double precision [»farnC7_1988]
Quote: use widest needed precision when evaluating mixed precision expressions [»farnC7_1988]
Quote: need implicit conversions for mixed-mode operations; otherwise get a quadratic explosion of functions [»stroB_1994]

Subtopic: automatic conversion up

Quote: argument matching rules for C++: exact match, integral promotions, standard conversions, user-defined conversions, parameter ellipsis; must be unique at a level [»stroB_1991]
Quote: Modula-3 allows implicit conversion only if it can be implemented by bit-copy; e.g., 'cardinal' to 'integer' but not 'real' to 'longreal' [»goldD6_1992]
Quote: Modula-3 does not use ambiguous types, target-typing, or automatic conversions (except for packed fields, etc.)

Subtopic: problems with automatic conversion up

Quote: automatic conversion to smaller objects widely used; e.g., from 'int' to 'char'; could not remove from C++ [»stroB_1994]
Quote: automatic type conversion is a bad idea because it reduces type checking [»clarBL9_1973]
Quote: automatic type conversion does not work as intended; i.e., perform intended conversions while refusing to perform other conversions [»parnDL3_1976]

Subtopic: problems with conversion up

Quote: Modula-3's strict conversions requires separate representations for real, longreal, and extended literals; makes it difficult to write generic procedures [»goldD6_1992]
Quote: multiple template arguments for arithmetic types can lead to an explosion of generated functions and code; should use explicit type conversion instead [»stroB_1991]
Quote: wrong output despite the conversion of Cobol arithmetic into C [»tereAA11_2000]
Quote: an endless list of annoying issues for converting between programming languages; e.g., different dialects of Cobol [»tereAA11_2000]
Quote: converting programs from Cobol is difficult because of Cobol's rich set of constructions for sophisticated data-processing [»tereAA11_2000]
Quote: converting a program to another language is always difficult; particularly with semantic equivalence and a rich source language

Related Topics up

Group: type inheritance   (13 topics, 394 quotes)

Topic: casting a variable to a different type (7 items)
Topic: data type compatibility (5 items)
Topic: dynamic type checking (43 items)
Topic: function call (28 items)
Topic: object and value equivalence (60 items)
Topic: real numbers and floating point numbers (37 items)
Topic: restricted and extended types (35 items)
Topic: structural equivalence vs. name equivalence of data types (30 items)
Topic: translation of data (26 items)
Topic: type hierarchy (18 items)
Topic: type inheritance as reuse (27 items)
Topic: units (23 items)
Topic: weak vs. strong type checking (42 items)
Topic: XML data type
(22 items)

Updated barberCB 12/05
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.