C Data type
Data Types in C with Examples
Data types are used to define the type of data that a variable can store to perform a specific operation.ANSI C provides three types of data-types.
- Primary Data Types
- Derived Data Type
- User Defined Data Types

Primitive data types:
Primitive data types are used to hold the maximum value. Every C compiler supports five primary data types:
Void | It holds no value and generally used with function. |
Int | It is used to denote an integer type. |
Char | It is used to denote a character type. |
float, double | It is used to denote a floating point type. |
int *, float *, char * | It is used to denote a pointer type. |
Primitive data types are used to hold the maximum value. Every C compiler supports five primary data types:
Example:
int a=90; // valid a=90; // invalidDerived Data Type: Derived data types are derived from fundamental data type. Variable of derived data type allows us to store the value of the same time in one variable. C supports three derived data types:
Arrays | Arrays are sequences of data items that have homogeneous values and adjacent memory locations to store values. |
References | Function pointers allow referencing functions with a particular signature. |
Pointers | It is used to access memory and deal with their addresses. |
Example:
int mark[5]={10, 20, 30, 40}; int *a;User Defined Data Types: The user-defined data type is used to store multiple values. There are various user-defined data types are given below in the table.
Data Types | Description |
Structure | The structure is a package of variables under a single name. The “struct” keyword is used to define a structure. |
Union | It is used to store the various data types in the same memory location. |
Enum | It consists of integral constants and each of them is assigned with a specific name. It is defined as “enum” keyword. |
Example:
struct student { int id; char name[10]; float mob; };C Data Type with size
Let us consider an example to find the memory size of data type:
#include int main() { int a; char b; float c; double d; printf("Storage size for int data type:%d \n",sizeof(a)); printf("Storage size for char data type:%d \n",sizeof(b)); printf("Storage size for float data type:%d \n",sizeof(c)); printf("Storage size for double data type:%d\n",sizeof(d)); return 0; }
Data Types | Memory Size | Range |
char | 1 byte | ?128 to 127 |
signed char | 1 byte | ?128 to 127 |
unsigned char | 1 byte | 0 to 255 |
short | 2 byte | ?32,768 to 32,767 |
signed short | 2 byte | ?32,768 to 32,767 |
unsigned short | 2 byte | 0 to 65,535 |
int | 2 byte | ?32,768 to 32,767 |
signed int | 2 byte | ?32,768 to 32,767 |
unsigned int | 2 byte | 0 to 65,535 |
short int | 2 byte | ?32,768 to 32,767 |
signed short int | 2 byte | ?32,768 to 32,767 |
unsigned short int | 2 byte | 0 to 65,535 |
long int | 4 byte | -2,147,483,648 to 2,147,483,647 |
signed long int | 4 byte | -2,147,483,648 to 2,147,483,647 |
unsigned long int | 4 byte | 0 to 4,294,967,295 |
float | 4 byte | 1E–37 to 1E+37 with six digits of precision |
double | 8 byte | 1E–37 to 1E+37 with ten digits of precision |
long double | 10 byte | 1E–37 to 1E+37 with ten digits of precision |