Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Numerical Data Types | Variables and Data Types
C++ Introduction
course content

Course Content

C++ Introduction

C++ Introduction

1. Getting Started
2. Variables and Data Types
3. Introduction to Operators
4. Introduction to Program Flow
5. Introduction to Functions

bookNumerical Data Types

Whole numbers

Integer data types are the most commonly used for whole numbers. The int data type can hold values within the range of -2,147,483,648 to 2,147,483,647.

cpp

main

copy
12345678910
#include <iostream> int main() { int goodNumber = 12; int tooLarge = 2147483648; std::cout << "Printing tooLarge: " << tooLarge << std::endl; std::cout << "Printing goodNumber: " << goodNumber << std::endl; }

That happens because when you declare an int variable, it allocates precisely 4 bytes of your PC's memory. And numbers above 2147483647 (or below -2147483648) do not fit inside those 4 bytes. Luckily, other data types available can allocate you more(or less) space for your needs. Here is the table:

Data Type
Range
Size
short
-32,768 to 32,767
2 bytes
int
-2,147,483,648 to 2,147,483,647
4 bytes
long
-9223372036854775808 to 9223372036854775807
8 bytes

So you can use long to store large numbers (e.g., World's population). You can also use short if you are sure your number will not exceed the -32,768 to 32,767 range (e.g., storing a user's age). Using short will take up less space.

cpp

main

copy
123456789101112
#include <iostream> int main() { short age = 22; int likes = 143200; long population = 7900000000; std::cout << "Age: " << age << std::endl; std::cout << "Likes: " << likes << std::endl; std::cout << "World's population: " << population << std::endl; }

Note

Be careful with the data type you choose. If the range of a type is exceeded, the C++ compiler will not tell you this, and you will get an unexpected value without knowing something is wrong.

Floating point numbers

The data types above are designed to store whole numbers. If we tried to assign 1.6 to one of those, here is what we would get:

cpp

main

copy
1234567
#include <iostream> int main() { int num = 1.6; std::cout << num << std::endl; }

The int type ignores the decimal part of a number. The same story with short or long. To store the floating point(decimal) numbers, we should use either float or double data type.

Data Type
Precision
Size
float
7 decimal digits
4 bytes
double
15 decimal digits
8 bytes

Here is an example of using double to store 1.6.

cpp

main

copy
1234567
#include <iostream> int main() { double num = 1.6; std::cout << num << std::endl; }

Note

Since the float type only has a precision of seven digits, the number 123.456789 is already out of its range. It can lead to inaccurate results(as shown in the example below). So it is better to use double by default unless you are sure float's precision is enough.

cpp

main

copy
12345678910
#include <iostream> int main() { float floatNum = 123.45678; double doubleNum = 123.45678; std::cout << "using float:" << floatNum - 123 << std::endl; std::cout << "using double:" << doubleNum - 123 << std::endl; }

Obviously, you can use float or double to store whole numbers since those are decimal numbers with a decimal part equal to 0. However, as a good practice, if a variable stores values that can only be whole numbers (e.g., population or likes), short/int/long should be used.

cpp

main

copy
1234567
#include <iostream> int main() { float price = 100; std::cout << "Price is: " << price << std::endl;; }

Everything was clear?

How can we improve it?

Thanks for your feedback!

Section 2. Chapter 3
some-alt