The following table lists the valid type-specifiers:

an empty or NULL value.
char, signed char
a variable to store a basic character in the character set. The value is either signed or non- negative.
unsigned char
Same as char, but unsigned values only.
short, signed short, short int, signed short int
a 16-bit short signed integer.
unsigned short, unsigned short int
an unsigned short integer.
int, signed, signed int, long, signed long, long int, signed long int, or no type specifier
a 32 bit signed integer. If no type specifier is given, then this is the default.
unsigned long, unsigned long int, unsigned int, unsigned
same as int, but unsigned values only.
long long, signed long long
a 64 bit signed integer.
unsigned long long
same as long long, but unsigned values only.
a floating-point number. Consists of a sign, a mantissa (number greater than or equal to 1), and an exponent. The mantissa is taken to the power of the exponent and then given the sign. The exponent is also signed allowing extremely small fractions. The mantissa gives it a finite precision.
a more accurate floating-point number than float. Normally twice as many bits in size as float. Size depends on platform and application.
long double
increases the size of double.

The following table shows the minimum and maximum ranges of the various data types with their type-specifiers for most platforms.

unsigned char
8 bits
0 to 255
8 bits
-128 to 127
unsigned short
16 bits
0 to 65,535
short int
16 bits
-32,768 to 32,767
32 bits
-2,147,483,648 to 2,147,483,647
unsigned long
32 bits
0 to 4,294,967,295
32 bits
-2,147,483,648 to 2,147,483,647
long long64 bits–9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
unsigned long long64 bits0 to 18,446,744,073,709,551,615
32 bits
1.17549435 * (10^-38) to
3.40282347 * (10^+38)
64 bits
2.2250738585072014 * (10^-308) to 1.7976931348623157 * (10^+308)
long double
80 bits
3.4 * (10^-4932) to 1.1 * (10^4932)