Node:Integer variables, Next:Declarations, Previous:Variables and declarations, Up:Variables and declarations
C has five kinds of integer. An integer is a whole number (a number without a fractional part). In C, there are a limited number of integers possible; how many depends on the type of integer. In arithmetic, you can have as large a number as you like, but C integer types always have a largest (and smallest) possible number.
char
:
A single byte, usually one ASCII character. (See the section on the
char
type below.)
short
:
A short integer (16 bits long on most GNU systems). Also called
short int
. Rarely used.
int
:
A standard integer (32 bits long on most GNU systems).
long
:
A long integer (32 bits long on most GNU systems, the same as
int
). Also called long int
.
long long
:
A long long integer (64 bits long on most GNU systems). Also called
long long int
.
64-bit operating systems are now appearing in which long integers are 64 bits long. With GCC, long integers are normally 32 bits long and long long integers are 64 bits long, but it varies with the computer hardware and implementation of GCC, so check your system's documentation.
These integer types differ in the size of the integer they can hold and the amount of storage required for them. The sizes of these variables depend on the hardware and operating system of the computer. On a typical 32-bit GNU system, the sizes of the integer types are as follows.
Type | Bits | Possible Values
|
char | 8 | -127 to 127
|
unsigned char | 8 | 0 to 255
|
| ||
short | 16 | -32,767 to 32,767
|
unsigned short | 16 | 0 to 65,535
|
| ||
int | 32 | -2,147,483,647 to 2,147,483,647
|
unsigned int | 32 | 0 to 4,294,967,295
|
| ||
long | 32 | -2,147,483,647 to 2,147,483,647
|
unsigned long | 32 | 0 to 4,294,967,295
|
| ||
long long | 64 | -9,223,372,036,854,775,807
to 9,223,372,036,854,775,807
|
unsigned long long | 64 | 0 to 18,446,744,073,709,551,615
|
On some computers, the lowest possible value may be 1 less than shown
here; for example, the smallest possible short
may be -32,768
rather than -32,767.
The word unsigned
, when placed in front of integer types, means
that only positive or zero values can be used in that variable (i.e. it
cannot have a minus sign). The advantage is that larger numbers can then
be stored in the same variable. The ANSI standard also allows the word
signed
to be placed before an integer, to indicate the opposite
of unsigned
.