Data types are means to identify the types of data and associated operations for handling it.
There are five foundational data types: character, integer, floating-point, double floating-point, and valueless . These are declared using char, int, float, double, and void, respectively. These types form the basis for several other types. The size and range of these data types may vary among processor types and compilers.
1. Fundamental data types
2. Derived data types
Integer are whole number. They have no fractional parts. Integer are represented in C by int data type. It can holds only integer value. The size of an int is usually the same as the word length of the execution environment of the program.
Character can stored any number of the C implementation basic character set. If character from this set is stored in a character variable, its value, its value is equivalent to the integer code of that character. An identifier declared as char becomes a character variable. char are generally used to hold values defined by the ASCII character set. Values outside that range may be handled differently by different compilers. In all cases an object of type char is 1 byte.
A number having fractional part is floating pointer number.The range of float will depend upon the method used to represent the floating-point numbers. Standard C specifies that the minimum range for a floating-point value is 1E–37 to 1E+37.
The data type double is also used for handling floating point number. But it is treated as a distinct data types because, it occupies twice as much memory as type float.
The void type specifies an empty set of values. The type void either explicitly declares a function as returning no value or creates generic pointers.
Except type void, the basic data types may have various modifiers preceding them. A type modifier alters the meaning of the base type to more precisely fit a specific need.
Type | Typical Size in Bits | Minimal Range |
char | 8 | -127 to 127 |
unsigned char | 8 | 0 to 255 |
int | 16 or 32 | –32,767 to 32,767 |
unsigned int | 16 or 32 | 0 to 65,535 |
short int | 16 –32 | 767 to 32,767 |
long int | 32 | –2,147,483,647 to 2,147,483,647 |
float | 32 | 1E–37 to 1E+37 with six digits of precision |
double | 64 | 1E–37 to 1E+37 with ten digits of precision |
long double | 80 | 1E–37 to 1E+37 with ten digits of precision |