Who C++ Data Types

C++ Data Types

 
 
 
 
  •  

 All variables use data-type during declaration to restrict the type of data to be stored. Therefore, we can say that data types are used to tell the variables the type of data it can store. Whenever a variable is defined in C++, the compiler allocates some memory for that variable based on the data type with which it is declared. Every data type requires a different amount of memory.

Data Types in C/C++

 Data types in C++ are mainly divided into three types: 

 

1. Primitive Data Types: These data types are built-in or predefined data types and can be used directly by the user to declare variables. Example: int, char, float, Boole, etc. Primitive data types available in C++ are: 

  •  Integer
  •  Character
  •  Boolean
  •  Floating Point
  •  Double Floating Point
  •  Valueless or Void
  •  Wide Character

2.  Derived Data Types: The data types that are derived from the primitive or built-in data types are referred to as Derived Data Types. These can be of four types, namely: 

  •  Function
  •   Array
  •  Pointer
  •  Reference

3.  Abstract or User-Defined Data Types: These data types are defined by the user itself. Like, as defining a class in C++ or a structure. C++ provides the following user-defined data types: 

  •  Class
  •  Structure
  •  Union
  •  Enumeration
  •  Type def defined Data Types

 This article discusses primitive data types available in C++. 

  •  Integer: The keyword used for integer data types is int. Integers typically require 4 bytes of memory space and range from -2147483648 to 2147483647.  
  •  Character: Character data type is used for storing characters. The keyword used for the character data type is char. Characters typically require 1 byte of memory space and range from -128 to 127 or 0 to 255.  
  •  Boolean: Boolean data type is used for storing boolean or logical values. A boolean variable can store either true or false. The keyword used for the boolean data type is Boole
  •  Floating Point: Floating Point data type is used for storing single-precision floating-point values or decimal values. The keyword used for the floating-point data type is float. Float variables typically require 4 bytes of memory space. 
  •  Double Floating Point: Double Floating Point data type is used for storing double-precision floating-point values or decimal values. The keyword used for the double floating-point data type is double. Double variables typically require 8 bytes of memory space. 
  •  Void: Void means without any value. Void data type represents a valueless entity. A Void data type is used for those function which does not return a value. 
  •  Wide Character: Wide character data type is also a character data type but,this data type has a size greater than the normal 8-bit datatype. Represented by w char't. It is generally 2 or 4 bytes long.

  Datatype Modifiers

 As the name implies, data types modifiers are used with the built-in data types to modify the length of data that a particular data type can hold. 

Modifiers in C/C++

 Data type modifiers available in C++ are: 

  •  Signed
  •  Unsigned
  •  Short
  •  Long

 The below table summarizes the modified size and range of built-in data types when combined with the type modifiers:

 Data Type

 Size (in bytes)

  Range

 short int

 2

 -32,768 to 32,767

 unsigned short int

 2

 0 to 65,535

 unsigned int

 4

 0 to 4,294,967,295

 int

 4

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

long int

4

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

unsigned long int

4

0 to 4,294,967,295

 long int

8

-(2^63) to (2^63)-1

unsigned long int

8

0 to 18,446,744,073,709,551,615

signed char

1

-128 to 127

unsigned char

1

0 to 255

float

4

 

double

8

 

long double

12

 

w char't

2 or 4

1 wide character

 Note: Above values may vary from compiler to compiler. In the above example, we have considered GCC 32 bit.
 We can display the size of all the data types by using the size of() operator and passing the keyword of the datatype as an argument to this function as shown below: 

 Now to get the range of data types refer to the following chart

 Note: syntax<limits.h> header file is defined to find the range of fundamental data-types. Unsigned modifiers have minimum value is zero. So, no macro constants are defined for the unsigned minimum value.

 Macro Constants

 Name                                                                                                                             Expresses
 CHAR_MIN                                                              Minimum value for an object of type char
 CHAR_MAX                                                                Maximum value for an object of type char
 SCHAR_MIN                                                             Minimum value for an object of type Signed char
 SCHAR_MAX                                                                Maximum value for an object of type Signed   char
 UCHAR_MAX                                                                 Maximum value for an object of type   Unsigned char
CHAR_BIT                                                                 Number of bits in a char object
MB_LEN_MAX                                                                 Maximum number of bytes in a multi-byte character
SHRT_MIN                                                                 Minimum value for an object of type short int
SHRT_MAX                                                                 Maximum value for an object of type short int
USHRT_MAX                                                                 Maximum value for an object of type Unsigned short int
INT_MIN                                                                 Minimum value for an object of type int
INT_MAX                                                                 Maximum value for an object of type int
UINT_MAX                                                                 Maximum value for an object of type Unsigned int
 LONG_MIN                                                                 Minimum value for an object of type long int
 LONG_MAX                                                                 Maximum value for an object of type long int
 LONG_MAX                                                                 Maximum value for an object of type   Unsigned  long int
 LONG_MIN                                                                 Minimum value for an object of type long long   int
 LONG_MAX                                                                 Maximum value for an object of type long   long   int
 LONG_MAX                                                                 Maximum value for an object of type   Unsigned long int

 The actual value depends on the particular system and library implementation but shall reflect the limits of these types in the target platform. LONG_MIN, LONG_MAX, and LONG_MAX are defined for libraries complying with the C standard of 1999 or later (which only includes the C++ standard since 2011: C++11).

Enjoyed this article? Stay informed by joining our newsletter!

Comments

You must be logged in to post a comment.

About Author