C++ Tutorial C++ Advanced C++ References

C++ - Data Types

One of the most important parts of learning any programming language is to understand what are the available data types, and how data is stored, accessed and manipulated in that language. Based on the data type of a variable, the operating system allocates memory to the variable and decides what can be stored in the reserved memory.

There are three types of data types in C++ which are categorized below:

CategoryData Types
Basic Data Typeinteger, character, boolean, floating point, double floating point, void, wide character, etc.
Derived Data Typearray, pointer, function, reference, etc.
User Defined Data Typeclass, structure, union, enum, typedef, etc.

The table below describes basic data types of C++ in detail:

CategoryData Types
Floating Pointfloat
Double Floating Pointdouble
The Void Typevoid
Wide characterwchar_t

There are several types of modifier which can be used to modify the data types in C++.

  • signed
  • unsigned
  • short
  • long

The table below describes the variable type, memory size, and maximum and minimum value which can be stored in the variable.

CategoryMemory SizeRange
char1 byte-128 to 127
unsigned char1 byte0 to 255
signed char1 byte-127 to 127
short int2 byte-32,768 to 32,767
unsigned short int2 byte0 to 65,535
signed short int2 byte-32,768 to 32,767
int4 byte-2,147,483,648 to 2,147,483,647
unsigned int4 byte0 to 4,294,967,295
signed int4 byte-2,147,483,648 to 2,147,483,647
long int8 byte-2,147,483,648 to 2,147,483,647
unsigned long int8 byte0 to 4,294,967,295
signed long int8 byte-2,147,483,648 to 2,147,483,647
long long int8 byte-(263) to (263)-1
unsigned long long int8 byte0 to 18,446,744,073,709,551,615
float4 byte1.2E-38 to 3.4E+38 (~6 digits precision)
double8 byte 2.3E-308 to 1.7E+308 (~15 digits precision)
long double16 byte3.4E-4932 to 1.1E+4932 (~19 digits precision)
boolean1 bytetrue, false
void1 bytevoid
wchar_t2 or 4 byte1 wide character

sizeof() function

The memory size of a data type might be different as shown in the above table, depending upon the compiler. To find out the size of a data type, sizeof() function can be used.

#include <iostream>
using namespace std;
int main (){
  cout<<"Size of char: "<<sizeof(char)<<"\n"; 
  cout<<"Size of short int: "<<sizeof(short int)<<"\n";
  cout<<"Size of int: "<<sizeof(int)<<"\n";
  cout<<"Size of long int: "<<sizeof(long int)<<"\n";
  cout<<"Size of float: "<<sizeof(float)<<"\n";
  cout<<"Size of double: "<<sizeof(double)<<"\n";
  cout<<"Size of boolean: "<<sizeof(bool)<<"\n";
  cout<<"Size of wide character: "<<sizeof(wchar_t)<<"\n";  
  return 0;

The output of the above code will be:

Size of char: 1
Size of short int: 2
Size of int: 4
Size of long int: 8
Size of float: 4
Size of double: 8
Size of boolean: 1
Size of wide character: 4