Fundamental Types
Fundamental types in C++ are divided into three categories: “integral,”
“floating,” and “void.” Integral types are capable of handling whole
numbers. Floating types are capable of specifying values that may have
fractional parts.
The void type describes an empty set of values. No variable of
type void can be specified — it is used primarily to declare
functions that return no values or to declare “generic” pointers to
untyped or arbitrarily typed data. Any expression can be explicitly
converted or cast to type void. However, such expressions are
restricted to the following uses:
- An expression statement.
- The left operand of the comma operator.
- The second or third operand of the conditional operator (? :).
Table 2.3 explains the restrictions on type sizes. These restrictions
are independent of the Microsoft implementation.
Table 2.3 Fundamental Types of the C++ Language
Category |
Type |
Contents |
Integral |
char |
Type char is an integral type that usually
contains members of the execution character set — in Microsoft C++,
this is ASCII. |
|
|
The C++ compiler treats variables of type char,
signed char, and unsigned char as having
different types. Variables of type char are promoted to
int as if they are type signed char by default,
unless the /J compilation option is used. In this case they are
treated as type unsigned char and are promoted to
int without sign extension. |
|
short |
Type short int (or simply short)
is an integral type that is larger than or equal to the size of type
char, and shorter than or equal to the size of type int. |
|
|
Objects of type short can be declared as
signed short or unsigned short. Signed short
is a synonym for short. |
|
int |
Type int is an integral type that is larger
than or equal to the size of type short int, and
shorter than or equal to the size of type long. |
|
|
Objects of type int can be declared as
signed int or unsigned int. Signed
int is a synonym for int. |
|
__intn |
Sized integer, where n is the size, in bits,
of the integer variable. The value of n can be 8, 16, 32, or
64. |
|
long |
Type long (or long int) is an
integral type that is larger than or equal to the size of type
int. |
|
|
Objects of type long can be declared as
signed long or unsigned long. Signed
long is a synonym for long. |
Floating |
float |
Type float is the smallest floating type. |
|
double |
Type double is a floating type that is larger
than or equal to type float, but shorter than or equal to the
size of type long double.1 |
|
long double1 |
Type long double is a floating type
that is equal to type double. |
1 The representation of long double
and double is identical. However, long double and double
are separate types.
Microsoft Specific
Table 2.4 lists the amount of storage required for fundamental types in
Microsoft C++.
Table 2.4 Sizes of Fundamental Types
Type |
Size |
char, unsigned char, signed char |
1 byte |
short, unsigned short |
2 bytes |
int, unsigned int |
4 bytes |
long, unsigned long |
4 bytes |
float |
4 bytes |
double |
8 bytes |
long double1 |
8 bytes |
1 The representation of long double
and double is identical. However, long double and double
are separate types.