Signed integers can be of these types (the int after short, or long is optional):

signed char c = 127; */* required to be 1 byte, see remarks for further information. */*

signed short int si = 32767; */* required to be at least 16 bits. */*

signed int i = 32767; */* required to be at least 16 bits */*

signed long int li = 2147483647; */* **required to be at **least **32 **bits. */*

Version ≥ C99

signed long long int li = 2147483647; */* required to be at least 64 bits */*

Each of these signed integer types has an unsigned version.

unsigned int i = 65535;

unsigned short = 2767;

unsigned char = 255;

For all types but char the signed version is assumed if the signed or unsigned part is omitted. The type char constitutes a third character type, diﬀerent from signed char and unsigned char and the signedness (or not) depends on the platform.

Diﬀerent types of integer constants (called literals in C jargon) can be written in diﬀerent bases, and diﬀerent width, based on their preﬁx or suﬃx.

*/* the following variables are initialized to the same value: */*

int d = 42; */* decimal constant (base10) */*

int o = 052; */* octal constant (base8) */*

int x = 0xaf; */* hexadecimal constants (base16) */*

int X = 0XAf; */* (letters **'a' **through **'f' **(case insensitive) represent 10 through 15) */*

Decimal constants are always signed. Hexadecimal constants start with 0x or 0X and octal constants start just with a 0. The latter two are signed or unsigned depending on whether the value ﬁts into the signed type or not.

*/* suffixes to describe width and signedness **: ***/*

long int i = 0x32; */* no suffix represent int, or long int */*

unsigned int ui = 65535u; */* **u or U represent unsigned **int, **or long **int */*

long int li = 65536l; */* **l **or L represent long int */*

Without a suﬃx the constant has the ﬁrst type that ﬁts its value, that is a decimal constant that is larger than INT_MAX is of type long if possible, or long long otherwise.

The header ﬁle **<limits.h>**** **describes the limits of integers as follows. Their implementation-deﬁned values shall be equal or greater in magnitude (absolute value) to those shown below, with the same sign.