Data Types in C, C Language is rich in its data types. A data types is used to indicate the type of data value stored in a variable. The data type of a variable is specified at the time of its declaration and is attached till the end of execution of the program.
ANSI C supports three classes of data types :
- Primary or Fundamental Data Types
- Derived Data Types
- User Defined Data Types
1. Primary or Fundamental Data Types
All C compilers support five fundamental data types:
- Integer (int) Data Type
- Floating - Point (float) Data Type
- Double Precision Floating Point(double) Data Type
- Void Data Type
- Character (char) Data Type
Many of them also offer extended data types such as long int and long double.
|Data Types||Range of values|
|Char||-128 to 127|
|int||-32768 to 32767|
|float||3.4e-38 to 3.4e+38|
|double||1.7e-308 ti 1.7e+308|
Integer (int) Data Type
Integers are whole numbers with a range of values supported by a particular machine. Generally, integers occupy one word of storage, and since the word sizes of machines vary(typically, 16 or 32 bits) the size of an integer that can be stored depends on the computer.
If we used a 16 bit word length, the size of the integer value is limited to the range -32768 to +32767. A signed integer uses one bit for sign and 15 bits for the magnitude of the number. Similarly, a 32 bit word length can store an integer ranging from -2,147,483,648 to 2,147,483,647.
C has three classes of integer storage, namely short int, int and long int in both signed and unsigned forms. ANSI C defines these types so that they can be organized from the smallest to the largest.
For example, short int represents fairly small integer values and requires half the amount of storage as a regular int number uses.
Unlike signed integers, unsigned integers use all the bits for the magnitude of the number and are always positive.
Therefore, for a 16 bit machine, the range of unsigned integer numbers will be from 0 to 65535. We declare long and unsigned integers to increase the range of values.
The use of a qualifier signed on integers is optional because the default declaration assumes a signed number.
Floating - Point (float) Data Type
Floating point numbers are stored in 32 bits (on all 16 bit and 32 bit machines), with 6 digits of precision.
Floating point numbers are defined in C by the keyword float. When the accuracy provided by a float number is not sufficient, the type double can be used to define the number.
Double Precision Floating Point(double) Data Type
A double data type number uses 64 bits giving a precision of 14 digits. These are known as double precision numbers.
The double type represents the same data type that float represents, but with a greater precision. To extend the precision further, we may use long double which users 80 bits.
Void Data Type
The void type has no value. This is usually used to specify the type of functions.
The type of a function is said to be void when it does not return any value to the calling function.
It can also play the role of a generic type, meaning that it can represent any of the other standard types.
Character (char) Data Type
A single character can be defined as character(char) type data. Characters are usually stored in 8 bits(one byte) of internal storage.
The qualifier signed or unsigned may be explicitly applied to char.
While unsigned chars have values between 0 and 225, signed chars have values from -128 to 127.
Characters are stored in the memory with their ASCII values.
The following figure shows all the allowed combinations of basic types and qualifiers and their size and range on a 16 bit machine.
|char or single char||8||-128 to 127|
|unsigned char||8||0 to 255|
|int or signed int||16||-32768 to 32767|
|unsigned int||16||0 to 65535|
|short int, signed short int||8||-128 to 127|
|unsigned short int||8||0 to 255|
|long int or signed long int||32||-2147483648 to 2147483647|
|unsigned long int||32||0 to 4294967295|
|float||32||3.4E-38 to 3.4E+38|
|double||64||1.7E-308 to 1.7E+308|
|long double||80||3.4E-4932 to 1.1E+4932|
2. Derived Data Types :
3. User Defined Type Declaration :
- Type Definition Data Type
- Enumerated Data Type