C Data Types
C data types referance guide
Type  Explanation  Minimum size (bits)  Format specifier 

char 
Smallest addressable unit of the machine that can contain basic character set. It is an integer type. Actual type can be either signed or unsigned.  8  %c 
signed char 
Of the same size as char, but guaranteed to be signed. Capable of containing at least the [−127, +127] range.  8  %c (or %hhi for numerical output) 
unsigned char 
Of the same size as char, but guaranteed to be unsigned. Contains at least the [0, 255] range.  8  %c (or %hhu for numerical output) 
short short int signed short signed short int 
Short signed integer type. Capable of containing at least the [−32,767, +32,767] range.  16  %hi or %hd 
unsigned short unsigned short int 
Short unsigned integer type. Contains at least the [0, 65,535] range.  16  %hu 
int signed signed int 
Basic signed integer type. Capable of containing at least the [−32,767, +32,767] range.  16  %i or %d 
unsigned unsigned int 
Basic unsigned integer type. Contains at least the [0, 65,535] range.  16  %u 
long long int signed long signed long int 
Long signed integer type. Capable of containing at least the [−2,147,483,647, +2,147,483,647] range.  32  %li or %ld 
unsigned long unsigned long int 
Long unsigned integer type. Capable of containing at least the [0, 4,294,967,295] range.  32  %lu 
long long long long int signed long long signed long long int 
Long long signed integer type. Capable of containing at least the [−9,223,372,036,854,775,807, +9,223,372,036,854,775,807] range. Specified since the C99 version of the standard.  64  %lli or %lld 
unsigned long long unsigned long long int 
Long long unsigned integer type. Contains at least the [0, +18,446,744,073,709,551,615] range. Specified since the C99 version of the standard.  64  %llu 
float 
Real floatingpoint type, usually referred to as a singleprecision floatingpoint type. Actual properties unspecified (except minimum limits); however, on most systems, this is the IEEE 754 singleprecision binary floatingpoint format (32 bits). This format is required by the optional Annex F “IEC 60559 floatingpoint arithmetic”.  %f %F %g %G %e %E %a %A 

double 
Real floatingpoint type, usually referred to as a doubleprecision floatingpoint type. Actual properties unspecified (except minimum limits); however, on most systems, this is the IEEE 754 doubleprecision binary floatingpoint format (64 bits). This format is required by the optional Annex F “IEC 60559 floatingpoint arithmetic”.  %lf %lF %lg %lG %le %lE %la %lA ^{1} 

long double 
Real floatingpoint type, usually mapped to an extended precision floatingpoint number format. Actual properties unspecified. It can be either x86 extendedprecision floatingpoint format (80 bits, but typically 96 bits or 128 bits in memory with padding bytes), the nonIEEE “doubledouble” (128 bits), IEEE 754 quadrupleprecision floatingpoint format (128 bits), or the same as double. See the article on long double for details.  %Lf %LF %Lg %LG %Le %LE %La %LA ^{1} 