Ready to practice?
Sign up to access interactive coding exercises and track your progress.
Data Types
Brief introduction to data types what they are and how they work.
Prerequisites
What are Data Types?
Data types tell the compiler what kind of data a variable can store and how much memory to allocate for it. Every variable in C++ must have a data type.
Common Data Types (again)
Let's review most commonly used data types in C++:
Data Type | Size (bytes) | Range/Values | Example |
---|---|---|---|
int |
4 | -2,147,483,648 to 2,147,483,647 | int salary = 75000; |
short |
2 | -32,768 to 32,767 | short year = 2024; |
long |
8 | Very large whole numbers | long population = 8000000000; |
float |
4 | ±3.4 × 10^38 (6-7 digits precision) | float temperature = 98.6f; |
double |
8 | ±1.7 × 10^308 (15-16 digits precision) | double pi = 3.14159265359; |
char |
1 | Single character (ASCII) | char grade = 'A'; |
bool |
1 | true or false |
bool isValid = true; |
Data Type Sizes
Different data types require different amounts of memory:
#include <iostream>
using namespace std;
// We will run this program later to demonstrate
int main() {
cout << "Size of int: " << sizeof(int) << " bytes" << endl;
cout << "Size of double: " << sizeof(double) << " bytes" << endl;
cout << "Size of char: " << sizeof(char) << " byte" << endl;
cout << "Size of bool: " << sizeof(bool) << " byte" << endl;
return 0;
}
Typical sizes:
char
: 1 byte (can store values -128 to 127)bool
: 1 byte (stores true/false)int
: 4 bytes (can store roughly -2 billion to +2 billion)double
: 8 bytes (can store very large/small decimal numbers)
Why Size Matters
Choosing the right data type size affects both memory usage and program performance. Here's why it's important:
1. Memory Usage When you have thousands or millions of variables, size adds up quickly:
// Example: Storing 1 million user ages
int ages[1000000]; // Uses 4MB of memory (4 bytes × 1M)
short ages[1000000]; // Uses 2MB of memory (2 bytes × 1M) - 50% savings!
2. Performance Impact Smaller data fits better in computer cache, making programs faster:
char smallNumber = 100; // 1 byte - fits more data in cache
int largeNumber = 1000000; // 4 bytes - takes more space
double precision = 3.14159265359; // 8 bytes - needed for precision
3. Range Limitations Each type has limits - exceed them and you get overflow errors:
short maxShort = 32767; // Maximum value for short
maxShort = maxShort + 1; // Overflow! Wraps to -32768
int safeNumber = 50000; // Well within int range
4. Real-World Impact
// Game with 10,000 players online
short playerLevel[10000]; // 20KB memory
int playerLevel[10000]; // 40KB memory - double the space!
// For a mobile app, this difference matters for battery and performance
Memory efficiency example:
// Storing ages in a program with thousands of users
short userAge = 25; // 2 bytes - good range for ages (-32,768 to 32,767)
int userAge2 = 25; // 4 bytes - wasteful (-2,147,483,648 to 2,147,483,647)
// Scientific calculations
float roomTemp = 23.5f; // 4 bytes - adequate for temperature readings
double piValue = 3.14159265359; // 8 bytes - needed for high precision math
// Different integer sizes for different ranges
short year = 2024; // 2 bytes - perfect for years
int population = 50000; // 4 bytes - good for city populations
long worldPopulation = 8000000000; // 8 bytes - needed for very large numbers
Integer Types
Basic Integer Types
int
: Whole numbers (-2,147,483,648 to 2,147,483,647)short
: Smaller integers (-32,768 to 32,767)long
: Larger integers
int normalNumber = 42;
short smallNumber = 100;
long bigNumber = 1000000000;
When to Use Each
// Use int for most situations
int studentCount = 25;
int temperature = -5;
// Use short when memory is critical and values are small
short monthNumber = 12;
// Use long for very large numbers
long worldPopulation = 8000000000;
Floating-Point Types
Float vs Double
float
: 6-7 decimal digits precision (4 bytes)double
: 15-16 decimal digits precision (8 bytes)
float basicPrice = 19.99f; // Note the 'f' suffix
double precisePi = 3.14159265359;
Generally use double
- it has better precision and is the default for decimal numbers in C++.
Character and String Types
Single Characters
char letter = 'A';
char digit = '9';
char symbol = '$';
Important: Use single quotes for characters!
Strings
#include <string> // Required for string
string firstName = "John";
string lastName = "Doe";
string fullName = firstName + " " + lastName; // String concatenation
Strings are more complex than basic data types. We'll explore strings further in later lessons.
Boolean Type
The bool
type stores true/false values:
bool isStudent = true;
bool isGraduated = false;
bool hasDriversLicense = true;
Boolean values:
true
(equivalent to 1)false
(equivalent to 0)
Choosing the Right Data Type
Decision Guidelines
// For whole numbers:
int age = 25; // Most common choice
short dayOfMonth = 15; // When memory matters and values are small
long distance = 93000000; // For very large values
// For decimal numbers:
double price = 19.99; // Preferred for most decimals
float coordinate = 10.5f; // Only when memory is very limited
// For text:
char grade = 'A'; // Single character
string name = "Alice"; // Text/words
// For yes/no values:
bool isReady = true; // True/false conditions
Summary
Data types are fundamental to C++ programming:
- Choose the right size for your data
- Use
int
anddouble
for most situations - Memory efficiency matters in large programs
- Actual sizes may vary by system, but these are typical values
Understanding data types helps you write efficient, correct programs and avoid common errors like integer overflow or precision loss.
Data Types - Quiz
Test your understanding of the lesson.
Practice Exercises
Exploring Data Type Sizes
Use the sizeof operator to discover how much memory different data types use on your system.
Data Types Practice
Practice declaring variables with different data types and understanding memory usage.
Lesson Discussion
Share your thoughts and questions