Learn Flutter Framework by Google to Build Beautiful Apps. Learn App Development on FlutterCampus

Data Types and Their Classification | C Programming

C Programming

Data Types and Their Classification | C Programming

Data Types and Their Classification

Data Types
Data types in C refers to an extensive system used for declaring variables or functions of different types. The type of variable determines how much space it occupies in storage and how the bit pattern stored is interpreted.

The data types can be classified as:

  • Basic Types: They are arithmetic types and are further classified into (a) integer types and (b) floating-point types (c) void types.
  • Derived Types: They include (a) Pointer types, (b) Array types, (c) Function types.
  • User-defined Types: They are (a) Enumeration types (b) Structure types (c) Union types.

1. Basic Types: The fundamental data types are called basic data types.

(a) Integer types
The following table provides the details of standard integer types with their storage sizes and value ranges:




Value range


1 byte

-128 to 127 or 0 to 255

unsigned char

1 byte

0 to 255

signed char

1 byte

-128 to 127


2 or 4 bytes

-32,768 to 32,767 or -2,147,483,648 to 2,147,483,647

unsigned int

2 or 4 bytes

0 to 65,535 or 0 to 4,294,967,295


2 bytes

-32,768 to 32,767

unsigned short

2 bytes

0 to 65,535


4 bytes

-2,147,483,648 to 2,147,483,647

unsigned long

4 bytes

0 to 4,294,967,295

To get the exact size of a type or a variable on a particular platform, you can use the sizeof operator. The expressions sizeof(type) yields the storage size of the object or type in bytes. Given below is an example to get the size of int type on any machine.

#include <stdio.h>
#include <limits.h>
int main()
 printf("Storage size for int : %d \n", sizeof(int));
 return 0;
When you compile and execute the above program, it produces the following result:
Storage size for int : 4
int: Integers are whole numbers that can have both zero, positive and negative values but no decimal values. Eg: 0, 1, 2, -3, 12. We can use int for declaring an integer variable
int name;
Here, name is a variable of type integer. You can declare multiple variables at once in C. eg:
int name, age;
char: Keyword char is used for declaring character type variables. Eg:
char test = 'A';
signed and unsigned: In C, signed and unsigned are type modifiers. You can alter the data storage of a data type by using them. For eg:
unsigned int x;
int y;
Here, the variable x can hold only zero and positive values because we have used the unsigned modifier. Variable y can hold values from -231 to 231-1, whereas variable x can hold values from 0 to 232-1.
(b) Floating-Point Types
The following table provides the details of standard floating-point types with storage sizes and value ranges and their precision:


Storage size

Value range




4 byte

1.2E-38 to 3.4E+38

6 decimal places


8 byte

2.3E-308 to 1.7E+308

15 decimal places

long double

10 byte

3.4E-4932 to 1.1E+4932

19 decimal places



The header file float.h defines macros that allow you to use these values and other details about the binary representation of real numbers in your programs. The following example prints the storage space taken by a float type and its range values:

#include <stdio.h>
#include <float.h>
int main()
 printf("Storage size for float : %d \n", sizeof(float));
 printf("Minimum float positive value: %E\n", FLT_MIN );
 printf("Maximum float positive value: %E\n", FLT_MAX );
 printf("Precision value: %d\n", FLT_DIG );
 return 0;
When you compile and execute the above program, it produces the following result:
Storage size for float : 4
Minimum float positive value: 1.175494E-38
Maximum float positive value: 3.402823E+38
Precision value: 6
float and double: float and double are used to hold real numbers. 
float salary;
double price;
In C, floating-point numbers can also be represented in exponential. For example:
float normalizationFactor =22.422e4;
Short and long: If you need to use a large number, you can use a type specifier long. Here’s how:
long a;
long long b;
long double c;
Here variables a and b can store integer values. And, c can store a floating-point number. If you are sure, only a small integer ([-32,767,   +32, 767] range) will be used, you can use short.
short d;
(c)Void Types
The void type specifies that no value is available. It is used in three kinds of situations:
  1. Function returns as void: There are various functions in C which do not return any value or you can say they return void. A function with no return value has the return type as void. For example, void exit (int status);
  2. Function arguments as void: There are various functions in C which do not accept any parameter. A function with no parameter can accept the void. For example, int rand(void);
  3. Pointers to void: A pointer of type void * represents the address of an object, but not its type. For example, a memory allocation function void *malloc(size_t size); returns a pointer to void which can be cast to any data type.
2. Derived Types
Derived data types are also known as secondary data types. There is a collection of some different primary data types. The derived data types are:
  1. Pointer types
  2. Array types
  3. Function types

You will learn about these derived data types in a later chapter.

3. User-defined Types
 In C user can define an identifier that characterizes an existing data type. They are:
  1. Enumeration types
  2. Structure types
  3. Union types.

You may also like to read:

Luna GPS - GPS Tracking system in Nepal
Learn Flutter, App Templates, Packages
Join with us on social media to see our updates on your feed.