Primitive type
|
In computer science, primitive types, as distinct from composite types - are datatypes provided by a programming language as basic building blocks. Depending on the language and its implementation, primitive types may or may not have a one-to-one correspondence with objects in the computer's memory.
Primitive types are also known as built-in types or basic types.
The actual range of primitive types that is available is dependent upon the specific programming language that is being used. For example, in C, strings are not implemented as a primitive datatype, whereas in modern dialects of Basic they are primitives.
Typical primitive types include:
- character (
character
,char
); - Integer (
integer
,int
,short
,long
) with a variety of precisions; - floating-point number (
float
,double
,real
,double precision
) with binary representation usually conforming to the IEEE standards for floating point representation; - Fixed-point (
fixed
) with a variety of precisions and a programmer-selected scale. - boolean having the values true and false.
- string (
string
), a sequence of characters, which can be of zero length – containing no characters – if desired); - reference (also called a "pointer" or "handle"), a small value referring to another object, possibly a much larger one.
More sophisticated types include:
- Tuples in ML
- Linked lists in Lisp
- complex numbers in Fortran, C (C99), Python
- rational numbers in Lisp
- first class functions, closures, continuations in Functional programming languages such as Lisp and ML
One usually expect operations on primitive types to be the fastest language contructs there are. Integer addition, for example, can be performed as a single machine instruction, and some processors offer specific instructions to process sequences of characters with a single instruction. In particular, the C standard mentions that
"a ``plain'' int object has the natural size suggested by the architecture of the
execution environment". This means that int
is likely to be 32-bit long on a 32-bit
architecture.
Most languages do not allow the behaviour or capabilities of primitive types to be modified by programs. Exceptions include Smalltalk, which permits primitive datatypes to be extended within a program, adding to the operations that can be performed on them or even redefining the built-in operations.