Predefined Datatypes in C++

Predefined Datatypes

Here, in this section, we will discuss predefined data types in C++.

Predefined Datatypes in C

Integer DataType

We will discuss the following –

  1. Default int
  2. Unsigned int
  3. Long int
  4. Unsigned long int
  5. Short int
  6. Unsigned short int

1. Default int

  • Description: It can accept a non-decimal value in both negative and positive ranges. Thus, the name integers.
  • Size: 2 or 4 bytes
  • Range: -32768  to +32768 or -2,147,483,648 to +2,147,483,648
  • Macros : (INT_MIN, INT_MAX)

Example:

int a = 10;
int b = -3512;

2. Unsigned int

  • Description: It can accept only positive values. A good use case for applications where only positive numbers are required example – Roll No., ticket system.
  • Size: 2 or 4 bytes
  • Range: to +65,535 or 0 to +4,294,967,295
  • Macros : (USHRT_MAX)

Example:

unsigned int a = 10;
unsigned int b = 10987;

3. long int

  • Description: Ideal for very large integer values in positive/negative ranges.
  • Size: 4 or 8 bytes
  • Range: -2,147,483,648  to +2,147,483,647 or -9,223,372,036,854,775,808 to +9,223,372,036,854,775,807
  • Macros : (LONG_MIN, LONG_MAX)

Example:

long int a = 10172817;
long int b = -9876543210123;

4. Unsigned long

  • Description: Ideal for very large integer values only in positive ranges.
  • Size: 4 or 8 bytes
  • Range: (0 to 4,294,967,295) or (0 to 18,446,744,073,709,551,615)
  • Macros : (ULONG_MAX)

Example:

long int a = 3120172817;
long int b = -9876512323443210123;

5. Short

  • Description: Ideal for very small integer values in positive/negative ranges.
  • Size: 2 bytes guaranteed
  • Range: (-32,768 to 32,767)
  • Macros : (SHRT_MIN, SHRT_MAX)

Example:

long int a = 12;
long int b = -1087;

5. Unsigned short

  • Description: Ideal for very small integer values only in positive ranges.
  • Size: 2 bytes guaranteed
  • Range: (0 to 65,535)
  • Macros : (USHRT_MAX)

Example:

long int a = 1027;
long int b = 10;

Char DataType

We will discuss the following in this –

  1. Default char
  2. Unsigned char

1. Default char

  • Description: Every key in the keyboard acts as a char with an ASCII value. Characters are declared in the single quotation to distinguish them from variable names and character values
  • Size: 1 byte (8 bits)
  • Range: -128 to 127
  • Macros: CHAR_MAX and CHAR_MIN

Example

char a='@';
char b='c';

2. Unsigned char

  • Description: It accepts more number of characters than normal char type
  • Size: 1 bytes(8 bits)
  • Range : 0 to 255
  • Macro: UCHAR_MAX

Example

unsigned char a='ß'//beta charecter has ASCII value 223

float DataType

  • Description: It accepts fractional numbers up to 6 decimal place precision
  • Size: 4 bytes(32bits)
  • Macros : FLT_MAX and FLT_MIN

Range :

  • In positive range : +1.17549e-38 to +3.40282e+38
  • In negative range : -1.17549e-38 to -3.40282e+38

Note: 1.17549e-38 means 1.17549*10^(-38) which is very very small close to zero

Example

    float a = 56.771; 
    float b = 6.5;
    float c = 1.23e10; // 1.23 * 10^10
    float d = 1.98e-12;// 1.98 * 10^(-12)

Double DataType

  • Description: It accepts fractional numbers up to 12 decimal places mainly used for scientific computations
  • Size: 8 bytes(64 bits)
  • Macros: DBL_MAX and DBL_MIN

Range :

  • In positive range : +2.22507e-308 to +1.79769e+308
  • In negative range : -2.22507e-308 to -1.79769e+308

Note: 2.22507e-308 means 2.22507*10^(-308) which is very very small close to zero.

Example

    // same numbers as float
    // but below have higher precision and higher range
    double a = 56.771; 
    double b = 6.5;
    double c = 1.23e10; // 1.23 * 10^10
    double d = 1.98e-12;// 1.98 * 10^(-12)

Long Double DataType

  • Description: It accepts fractional numbers up to 19 decimal places mainly used for scientific computations
  • Size: 16 bytes(128 bits)
  • Macros: LDBL_MAX and LDBL_MIN

Range :

  • In positive range : +3.3621e-4932 to +1.18973e+4932
  • In negative range : -3.3621e-4932 to -1.18973e+4932

Note: 3.3621e-4932 means 3.3621e *10^(4932) which is very very small close to zero.

Example

    // same numbers as float/double
    // but below have higher precision and higher range
    long double a = 56.771; 
    long double b = 6.5;
    long double c = 1.23e10; // 1.23 * 10^10
    long double d = 1.98e-12;// 1.98 * 10^(-12)

wchar_t DataType

  • Description: Wide char can take on 65536 values which correspond to UNICODE values which is a recent international standard that allows for the encoding of characters for virtually all languages and commonly used symbols.
  • Size: 16 bytes(128 bits)
  • Range :0 to 65,535 or 4294967296
Mostly the wchar_t data type is used when international languages like Chinese, French are used.

Example

wchar_t b = L'艾儿';//Chinese alphabet

bool DataType

  • The ISO/ANSI C++ Standard has added certain new data types to the original C++ specifications.
  • They are provided to provide better control in certain situations as well as for providing conveniences to C++ programmers.

Syntax:

bool b = true; // declaring a boolean variable with true value
  • In C++, the data type bool has been introduced to hold a boolean value, true or false.
  • The values true or false have been added as keywords in the C++ language.

Note:

  • The default numeric value of true is 1 and false is 0.
  • We can use bool type variables or values true and false in mathematical expressions also.

Example

int x = false + true + 5;//6
  • The above expression is valid and the expression on the right will evaluate to 6 as false has value 0  and true will have value 1.
  • It is also possible to convert implicitly the data type integers or floating-point values to bool type.

Example:-

bool x = 0; // false 
bool y = 100; // true 
bool z = 18.75; // true

C++ program demonstrating predefined datatypes

#include<iostream>
using namespace std;

int main()
{
    int a = 567; //valid  
    int b = 2147483800; //invalid : will result in loss of precison max int value 2147483647
    long long int c = 2147483800; // valid because of enough size max long int value 9,223,372,036,854,775,807
    char d ='_'; //underscorecharecter
    double e = 66.91;
    bool f= false;
    bool g= true;
  
    cout << "a:" << a << endl;
    cout << "b:" << b << endl; // incorrect value will be printed due to overflow
    cout << "c:" << c << endl;
    cout << "d:" << d << endl; 
    cout << "e:" << e << endl;
    cout << "f:" << f << endl;
    cout << "g:" << g << endl;
    
    return 0;
}

Output

a:567
b:-2147483496
c:2147483800
d:_
e:66.91
f:0
g:1

Important Points

  1. Rage of datatypes always in between  -2n-1 to 2n-1-1   and 0 to 2n -1 for unsigned types, where n is the number of bits

Example:

  • int: -215 to 215-1 i.e -128 to 127
  • unsigned int: 0 to 216-1 i.e 0 to 65535

2. -ve numbers are always stored in,2’s compliment form hence you can allocate with +1 in the maximum negative range

Example:

-32768,-128 etc

One comment on “Predefined Datatypes in C++”