Data Types
Overview
Because C++ is statically typed and highly optimized, it needs to know exactly how much RAM to allocate for every variable. Primitive data types define the exact byte size and structural format of the data.
C++ provides integer types (int) for whole numbers, floating-point types (float, double) for decimals, character types (char) for single letters, and boolean types (bool) for true/false logic. Noticeably, C++ does not have a primitive 'String' type; text is historically handled as an array of characters, though modern C++ provides the highly robust std::string class to make text manipulation painless.
Syntax
// --- 1. Integers (Typically 4 bytes, stores ~ ±2 Billion) ---
int count = 42;
// --- 2. Decimals ---
float temp = 98.6f; // 4 bytes (requires 'f' suffix)
double precise = 3.14159; // 8 bytes (industry standard for decimals)
// --- 3. Characters & Booleans ---
char grade = 'A'; // 1 byte (Must use single quotes!)
bool isOnline = true; // 1 byte (true or false)
// --- 4. Strings (Requires <string> header) ---
#include <string>
std::string name = "John"; // Dynamic byte size (Must use double quotes!)Common Pitfalls
- Using
floatinstead ofdoublefor high-precision math (like banking). Afloatonly guarantees 7 decimal digits of precision, whereasdoubleguarantees 15. The industry standard is to always usedoubleunless you are extremely memory-constrained (like programming a GPU shader). - Confusing single quotes (
'A') and double quotes ("A"). Single quotes strictly define a 1-bytechar. Double quotes define a C-style array of characters. Assigning a double-quoted string to a char (char c = "A";) will fail.
Interview Questions
int take in C++?This is a trick question! The C++ Standard does NOT guarantee that an int is 4 bytes. It only guarantees that an int is at least 2 bytes, and sizeof(short) <= sizeof(int) <= sizeof(long). The actual size depends entirely on the compiler and CPU architecture (though on modern 64-bit systems, it is practically always 4 bytes).
Real-World Example
Using the sizeof() operator to dynamically verify memory allocation on the current hardware architecture.
#include <iostream>
using namespace std;
int main() {
// This will print '4' on most modern systems
cout << "An int takes " << sizeof(int) << " bytes of RAM.\n";
// This will print '8'
cout << "A double takes " << sizeof(double) << " bytes of RAM.\n";
return 0;
}Check Your Knowledge
Test your understanding of Data Types with these quick questions.