Professional Documents
Culture Documents
4 VariablesAndDataTypes-Slides
4 VariablesAndDataTypes-Slides
Section 4 : Variables
and data types
1
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Variables and Data Types
2
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
int main(){} Entry Point Statements Functions
5
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Memory is a grid of cells that contain either 1 or 0 in them.
Each cell is a bit
6
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
7
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
8
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
9
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
22 23.8
“Steve” …
10
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Slide intentionally left empty
11
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Number Systems
• Binary
• Octal
• Hexadecimal
12
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Number Systems
13
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
22 23.8
“Steve” …
14
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
2371 2 × 103 + 3 × 102 + 7 × 101 + 1 × 100
47 4 × 101 + 7 × 100
15
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
100101 1 × 25 +0 × 24 +0 × 23 + 1 × 22 + 0 × 21 + 1 × 20
Base 2 10010 1 × 24 +0 × 23 + 0 × 22 + 1 × 21 + 0 × 20
111 1 × 22 + 1 × 21 + 1 × 20
16
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Binary Decimal
000 0
001 1
010 2
3 Digits 011 3
100 4
101 5
110 6
111 7
17
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
3 Digits
in memory
18
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Binary Decimal
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
4 Digits 0111 7
1000 8
1001 9
1010 10
1011 11
1100 12
1101 13
1110 14 19
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
1111 15
4 Digits
in memory
20
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Binary Decimal Binary Decimal
00000 0 10000 16
00001 1 10001 17
00010 2 10010 18
00011 3 10011 19
00100 4 10100 20
00101 5 10101 21
00110 6 10110 22
5 Digits 00111 7 10111 23
01000 8 11000 24
01001 9 11001 25
01010 10 11010 26
01011 11 11011 27
01100 12 11100 28
01101 13 11101 29
01110 14 11110 30 21
The C++ Masterclass : The Fundamentals
01111 ©15
Daniel Gakwaya 11111 32
5 Digits
in memory
22
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Digits Data Range
1 0 ~1
2 0~3
3 0~7
Generalization
4 0~15
5 0~31
… …
n 0~2𝑛−1
23
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Digits Bytes Data Range
8 1 0 ~255
In practice 16 2 0~65,535
32 4 0~34,359,738,367
64 8 0~18,446,744,073,709,551,615
24
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Hexadecimal
System
25
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Binary Decimal Hex
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
Hexadecimal
System 0111 7 7
1000 8 8
1001 9 9
1010 10 A
1011 11 B
1100 12 C
1101 13 D
1110 14 E 26
The C++ Masterclass : The Fundamentals 1111
© Daniel Gakwaya
15 F
Hexadecimal 6 E 3 0 F 1 3 F
System
0x 6E30F13F
27
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
1 0010 0100 1000 1011 1010
Padding
28
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Binary Decimal Oct
000 0 0
001 1 1
010 2 2
011 3 3
100 4 4
Octal System
101 5 5
110 6 6
111 7 7
29
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
1 5 6 1 4 1 7 0 4 7 7
Octal System
0 15614170477
30
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Binary Table https://kb.iu.edu/d/afdl
31
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
32
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
• All data is represented by a bunch of grouped cells of 0’s and
1’s in memory
• As the range of your data grows, so will the number of digits you
need to represent the data in memory
• Hexadecimal system makes it a little easier for humans to handle
streams of data with 1’s and 0’s
• Octal has the same goal as Hexadecimal, but it’s almost no
longer used in modern times. It’s just mentioned here for your
awareness
33
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
22 23.8
“Steve” …
34
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Slide intentionally left empty
35
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Integers
36
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
22 37
55939 472299
37
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
A named piece of memory that you use to store
variable
specific types of data.
38
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
age
39
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
• Stores decimals
int • Typically occupies 4 bytes
or more in memory
40
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Variable braced initialization
41
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Functional variable initialization
42
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Assignment Initialization
43
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
• Braced Initialization
• Functional Initialization
• Assignment Initialization
44
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Size of a type in memory
45
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Int’s
in memory
46
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
47
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Slide intentionally left empty
48
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Integer Modifiers
49
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
22 37
55939 472299
50
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Positive and negative numbers
51
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
52
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
53
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
54
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
unsigned range [0 ~ 2𝑛 − 1]
55
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
* n is the number of bits for a type in memory
Type with modifier Bytes in memory Range
unsigned int 4 [0, 4,294,967,295]
signed int 4 [-2,147,483,648, 2,147,483,647]
56
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
short long
57
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
58
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
These modifiers only apply to integral types : those
Note
in which you can store decimal numbers
59
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Slide intentionally left empty
60
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Fractional Numbers
61
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
22.37 37.076
55.939 4722.99
62
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Floating Point Types
63
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Used to represent numbers with fractional parts in C++
64
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
22.37 37.076
55.939 4.72299
65
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Type Size Precision Comment
float 4 7 -
double 8 15 Recommended
default
long double 12 > double
66
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Precision
1.23456700001
67
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
68
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Precision
69
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Precision gone wrong
70
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Problem not caught at compile time
71
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Scientific Notation
72
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
73
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Floating Point Numbers Memory Representation
IEEE_754
https://en.wikipedia.org/wiki/IEEE_754
74
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
n(floating point)/ 0 Infinity(+/-)
75
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
76
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
• Remember the suffixes when initializing floating point variables,
otherwise the default will be double
• Double works well in many situations, so you will see it used a lot
77
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Slide intentionally left empty
78
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Booleans
79
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
true false
80
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
81
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
82
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
83
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
• A byte can store 256 different values
• Using it just to cover two states (true/false) is wasteful, especially for
devices with hard memory constraints (think embedded devices)
• There are techniques to pack even more data into a byte . We’ll learn
more about these in a few upcoming chapters
84
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Slide intentionally left empty
85
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Characters and Text
86
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
87
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
88
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
89
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
1 byte : 256 Possible
Each matched to some character
values
90
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
ASCII Table
91
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
* Source : https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html
It is possible to assign a valid ASCII code to a char variable, and the
corresponding character will be stored in. You can choose to interpret
that either as a character or a regular integral value
92
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
93
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
• ASCII was among the first encodings to represent text in a computer.
• It falls short when it comes to representing languages other than English and a few
western languages. Think Arabic, East Asian Languages like Japanese, Chinese ,…
• There are better ways to represent text that is meant to be seen in different
languages, one of the most common being Unicode
• The details of Unicode are out of scope for this course, just know that it’s a robust
way to represent text in different languages for a computer
94
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Slide intentionally left empty
95
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Auto
96
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
auto Let the compiler deduce the type
97
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
98
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
99
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Slide intentionally left empty
100
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Assignments
101
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
102
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
103
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
104
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
105
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Slide intentionally left empty
106
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Variables and data types
107
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
int double float char
108
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
109
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
22 23.8
“Steve” …
110
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Number Systems
• Binary
• Octal
• Hexadecimal
111
The C++ Masterclass : The Fundamentals © Daniel Gakwaya
Slide intentionally left empty
112
The C++ Masterclass : The Fundamentals © Daniel Gakwaya