Data Types

Data type are a fundamental concept that defines the type of data a variable can hold and the operations that can be performed on that data. They specify the size and format of the data, allowing the compiler to allocate memory and determine how data is stored and manipulated.

data types

 C++ provides a range of data types, including fundamental types like int, float, double, and char, which represent integers, floating-point numbers, and characters, respectively. Also, C++ allows users to define custom data types through structures, classes, and enumerations, enabling the creation of more complex and specialized data structures to suit specific programming needs. Understanding data types is important for effective variable declaration, memory management, and the proper execution of operations in C++ programs.

Primitive Data Types and Non-Primitive (User-Define) Data Types

Data type can be categorized into two main groups: primitive data types and non-primitive data type. Primitive data types are the fundamental building blocks and include types like int, float, double, and char, which directly represent basic values such as integers, floating-point numbers, and characters. They have fixed sizes and are directly supported by the C++ language.

On the other hand, non-primitive data types, also know user-defined data types, are created by combining primitive types and include arrays, structures, classes, and enumerations. These types allow programmers to define custom data structures with unique characteristics, encapsulating multiple variables or objects into a single entity. While primitive data types are essential for storing simple data, non-primitive data types enable the creation of more complex and customizable data structures, making C++ a versatile and powerful programming language.

Difference between Primitive and Non-Primitive Data Types in C++
AspectPrimitive Data TypesNon-Primitive Data Types (User-Defined)
DefinitionBuilt-in data typesCustom data types defined by users
Memory AllocationTypically, fixed sizeSize varies depending on data structure
Examplesint, float, char, bool, etc.struct, class, enum, union, etc.
OperationsLimited basic operationsCustom operations can be defined
Data StorageStores single valuesCan store multiple values and objects
InitializationAutomatically initialized with default values (0, 0.0, ‘\0’, false)Initialization may require user-defined constructors
Memory ManagementAutomatically managed by the compilerManual memory management may be required
Size and FlexibilityFixed size and limited flexibilityVariable size and high flexibility
Use CasesUsed for simple data storage and arithmetic operationsUsed for complex data structures and modelling real-world entities

Primitive Data Types:


  1. Efficiency: Primitive data types are highly efficient in terms of memory usage and processing speed because they are built into the language and optimized by the compiler.
  2. Portability: Primitive data types have consistent behaviour across different platforms and compilers, making C++ programs portable.
  3. Simplicity: They are easy to use and understand, making them suitable for simple data storage and manipulation.
  4. Built-in Operations: Primitive data types come with built-in operators and functions, allowing for straightforward mathematical and logical operations.


  1. Limited Representations: Primitive types have finite ranges and precisions. For example, int has a limited range, and float has limited precision. This limitation can lead to issues with large numbers or high precision requirements.
  2. Limited Expressiveness: They may not adequately represent complex real-world entities or data structures, making them less suitable for modelling certain types of data.

Non-Primitive (User-Defined) Data Types:


  1. Customization: User-defined data types allow programmers to create data structures tailored to specific application requirements, making code more expressive and meaningful.
  2. Abstraction: They enable encapsulation and abstraction, making it easier to manage and manipulate complex data and functionality.
  3. Reusability: Once defined, user-defined data types can be reused throughout the program or in different programs, promoting code reusability and maintainability.
  4. Extensibility: They can be extended with member functions and overloaded operators, providing a higher level of control and functionality.


  1. Complexity: Defining and using user-defined data types can be more complex and time-consuming compared to using primitive types, especially for simple tasks.
  2. Resource Overhead: Custom data types may consume more memory and CPU resources than primitive types, particularly when they include additional functionality and data members.
  3. Learning Curve: Understanding and effectively using user-defined types often requires a deeper understanding of object-oriented programming concepts, which may be challenging for beginners.

Other classification of data types

Signed Data Type:

  • Signed data types can represent both positive and negative values, including zero.
  • The leftmost bit (the most significant bit) is used as the sign bit, with 0 indicating a positive value and 1 indicating a negative value.
  • The remaining bits represent the magnitude of the number.
  • Common signed data types in C include signed char, signed int, and signed long.

Unsigned Data Type:

  • Unsigned data types can only represent non-negative values, starting from zero and going up to their maximum positive value.
  • All bits in an unsigned data type are used to represent the magnitude of the number, with no sign bit.
  • As a result, the range of values for unsigned data types is twice that of their signed counterparts.
  • Common unsigned data types in C include unsigned char, unsigned int, and unsigned long.

Integer (int) Data Type

The int data type is a fundamental primitive data type used to store integer values. It stands for “integer” and is used for variables that hold whole numbers without any fractional or decimal parts. Here are some key characteristics of the int data type:

1. int
 The size of an int variable is typically 4 bytes on most modern systems. This means it can store a wide range of integer values within its memory allocation. It has a range from -2,147,483,648 to 2,147,483,647 (inclusive).

2. short int

The short int data type is used to store smaller integers, as it takes up only 2 bytes (16 bits) of memory. Its range lies between -32,768 to 32,767 (inclusive).

3. long int
For larger integers, the long int data type is used. It consumes 4 bytes (32 bits) or 8 bytes (64 bits) of memory, depending on the platform. The range is significantly wider, spanning from approximately -9.2 quintillion to 9.2 quintillion.

4. unsigned int, unsigned short int, and unsigned long int

Adding “unsigned” before the data type name changes the range to include only non-negative values. For example, unsigned int has a range from 0 to 4,294,967,295 for 32-bit system and 0 to 18446744073709551615 for 64-bit system, doubling the positive range compared to int.

Integer Data Types (int)
Data TypeFormat Specifier  MemoryRange
int%d2 or 4 bytes-32,768 to 32,767 or -2,147,483,648 to 2,147,483,647
unsigned int%u2 or 4 bytes0 to 65,535 or 0 to 4,294,967,295
short int%hd2 bytes-32,768 to 32,767
unsigned short int%hu2 bytes0 to 65,535
long int%ld8 bytes-9223372036854775808 to 9223372036854775807
unsigned long int%lu8 bytes0 to 18446744073709551615

Floating (float) Data Type

The float data type is a fundamental primitive data type used to store single-precision floating-point numbers. It is used for variables that represent real numbers with decimal points. Here are some key characteristics of the float data type:

1. float

The float data type is used to store single-precision floating-point numbers. It occupies 4 bytes of memory and has a range from approximately -3.4E38 to 3.4E38, with a precision of about 7 decimal digits.

2. double

The double data type offers double-precision floating-point numbers. It consumes 8 bytes of memory, providing a broader range from approximately -1.7E308 to 1.7E308, with a precision of about 15 decimal digits.

3.  Long double

In C++, long double is a data type used to represent floating-point numbers with extended precision. It is an extension of the double data type, providing more significant digits and a wider range of values. The long double data type is particularly useful when higher precision is required for numerical calculations.

Float Data Type
Data TypeFormat specifier MemoryRange
Float%f4 bytes1.2E-38 to 3.4E+38
Double%lf8 bytes2.3E-308 to 1.7E+308
Long double%Lf10 bytes3.4E-4932 to 1.1E+4932

Character Data Type (char)

1. Char:

In C++ programming, char is a data type used to represent individual characters. It stands for “character” and is used to store single ASCII characters, such as letters, digits, punctuation marks, and special symbols.

2. Unsigned Char:

The unsigned char data type is similar to the char data type but does not include negative values. It is used to represent only non-negative characters, from 0 to 255, corresponding to their ASCII values.

3. Char Array:
A char array, also known as a string in C++, is a sequence of characters stored in consecutive memory locations. It is represented as an array of char data type elements, terminated by a null character ‘\0’. The null character serves as the string’s end and indicates where the sequence of characters stops. Char arrays are commonly used to handle and manipulate text in C++.

Character Data Type (char)
Data TypeFormat specifier MemoryRange
Char%c1 byte-128 to 127 or 0 to 255
Unsigned char%c1 byte0 to 255
Char array (string)%s1 byte-128 to 127

Other Data Types

Besides the fundamental data types mentioned above, C also offers additional data types to meet specific programming requirements:

1. void

The void data type is used to indicate the absence of a type. It is commonly used as a return type for functions that do not return any value.

2. Bool

The Bool data type is used to represent Boolean values. It can take two values: 0 for false and 1 for true.

3. wchar_t

The wchar_t data type is used to represent wide characters, which are used for extended character sets and internationalization.

Note: – In many programming languages, format specifiers are denoted by a percent symbol (%) followed by a character or characters that represent the data type or formatting instructions. 

Read more about Computers:
History of Computer: –
Basic Computer: –
Want to learn Programming:
Start with HTML: –
C Programming: –

Follow Us on: –
Facebook Page: –
Quora: –

By Admin

Leave a Reply

Your email address will not be published. Required fields are marked *