C Data Types

In this tutorial, you will learn primary data types in C programming.

Data types are used to determine the size and type of data stored in a variable. For example,

int mark;

Here mark is a variable of type int. That is mark can store integer values.

C supports the following classes of data types:

  • Primary data types.
  • Derived data types.
  • User-defined data types.

C supports five primary (fundamental) datatypes namely integer(int), character(char), floating-point(float), double-precision floating-point(double) and void(void). Many of them also include additional data types, such as long int and long double.

The following table contains various data types along with their size, range of values and format specifier.

TypeSize (bytes)Range of valuesFormat specifier
int2-32,768 to 32767%d
char1-128 to 127%c
float43.4E -38 to 3.4E +38%f
double81.7E -308 to 1.7E +308%lf
short int1-128 to 127%hd
unsigned int20 to 65535%u
unsigned short int10 t0 256%hu
long int4-2,147,483,648 to 2,147,483,647%ld
unsigned long int40 to 4,294,967,295%lu
long double103.4E -4932 to 1.1E +4932%Lf


Integers are whole numbers having a range of values that are supported by a certain computer. In C, there are three types of integer storage: short int, int, and long int, which are available in both signed and unsigned forms. That is integers can store both zero, positive and negative values but no decimal values.

int roll;
int roll, mark;
short int id;
signed int x;

short int represents relatively small integer values and takes half the storage space of a typical int number. unsigned int employ all of the bits for the magnitude of the number and are always positive. Because the default declaration implies a signed number, the use of the qualifier signed on integers is optional.

Floating point

Floating-point variables are used to store real numbers with 6 digits of precision. In C, floating-point numbers are defined by the keyword float. To define a number with 14 numbers of precision, the type double can be used. These are referred to as double-precision numbers. long double can be used to increase precision even further.

float rate;
double price;


The char data type can be used to define a single character.

char demo = 'x';


The void type has no values. This is typically used to specify the type of function that returns no value to the caller function.

Derived Data Types and User-Defined Data Types

Derived types are data types that are derived from fundamental data types. Arrays, pointers, function types, structures, and so on are examples.

Notify of
Inline Feedbacks
View all comments