Data Types
Boolean Logic
Boolean values store true or false and help choose branches.
logical and
The `&&` operator is true only when both sides are true.
Boolean Logic
bool_logic.cpp
Replay: real traced execution (multi-file project)
#include <iostream>
#include <string>
int main() {
int age = 20;
bool hasPass = true;
bool canEnter = age >= 18 && hasPass;
std::string result = "";
if (canEnter) {
result = "enter";
} else {
result = "wait";
}
std::cout << "age=" << age << std::endl;
std::cout << "hasPass=" << hasPass << std::endl;
std::cout << "result=" << result << std::endl;
return 0;
}
#include <iostream>
#include <string>
int main() {
int age = 15;
bool hasPass = true;
bool canEnter = age >= 18 && hasPass;
std::string result = "";
if (canEnter) {
result = "enter";
} else {
result = "wait";
}
std::cout << "age=" << age << std::endl;
std::cout << "hasPass=" << hasPass << std::endl;
std::cout << "result=" << result << std::endl;
return 0;
}
#include <iostream>
#include <string>
int main() {
int age = 70;
bool hasPass = true;
bool canEnter = age >= 18 && hasPass;
std::string result = "";
if (canEnter) {
result = "enter";
} else {
result = "wait";
}
std::cout << "age=" << age << std::endl;
std::cout << "hasPass=" << hasPass << std::endl;
std::cout << "result=" << result << std::endl;
return 0;
}
#include <iostream>
#include <string>
int main() {
int age = 20;
bool hasPass = false;
bool canEnter = age >= 18 && hasPass;
std::string result = "";
if (canEnter) {
result = "enter";
} else {
result = "wait";
}
std::cout << "age=" << age << std::endl;
std::cout << "hasPass=" << hasPass << std::endl;
std::cout << "result=" << result << std::endl;
return 0;
}
age ← 20, hasPass ← 1, canEnter ← 1, result ← (empty)
4int main() {5 int age→ 20 = 20; //@age=15, 706 bool hasPass→ 1 = true; //@hasPass=false7 bool canEnter→ 1 = age20 >= 18 && hasPass1;8 std::string result→ (empty) = "";result ← enter
10if (canEnter1) {11 result→ enter = "enter";12} else {std::cout << "age=" << age << std::endl;
16 std::cout << "age=" << age20 << std::endl;17 std::cout << "hasPass=" << hasPass1 << std::endl;18 std::cout << "result=" << resultenter << std::endl;19 return 0;20}outputage=20 hasPass=1 result=enter
age ← 15, hasPass ← 1, canEnter ← 0, result ← (empty)
4int main() {5 int age→ 15 = 15;6 bool hasPass→ 1 = true;7 bool canEnter→ 0 = age15 >= 18 && hasPass1;8 std::string result→ (empty) = "";result ← wait
11 result = "enter";12} else {13 result→ wait = "wait";14}std::cout << "age=" << age << std::endl;
16 std::cout << "age=" << age15 << std::endl;17 std::cout << "hasPass=" << hasPass1 << std::endl;18 std::cout << "result=" << resultwait << std::endl;19 return 0;20}outputage=15 hasPass=1 result=wait
age ← 70, hasPass ← 1, canEnter ← 1, result ← (empty)
4int main() {5 int age→ 70 = 70;6 bool hasPass→ 1 = true;7 bool canEnter→ 1 = age70 >= 18 && hasPass1;8 std::string result→ (empty) = "";result ← enter
10if (canEnter1) {11 result→ enter = "enter";12} else {std::cout << "age=" << age << std::endl;
16 std::cout << "age=" << age70 << std::endl;17 std::cout << "hasPass=" << hasPass1 << std::endl;18 std::cout << "result=" << resultenter << std::endl;19 return 0;20}outputage=70 hasPass=1 result=enter
age ← 20, hasPass ← 0, canEnter ← 0, result ← (empty)
4int main() {5 int age→ 20 = 20;6 bool hasPass→ 0 = false;7 bool canEnter→ 0 = age20 >= 18 && hasPass0;8 std::string result→ (empty) = "";result ← wait
11 result = "enter";12} else {13 result→ wait = "wait";14}std::cout << "age=" << age << std::endl;
16 std::cout << "age=" << age20 << std::endl;17 std::cout << "hasPass=" << hasPass0 << std::endl;18 std::cout << "result=" << resultwait << std::endl;19 return 0;20}outputage=20 hasPass=0 result=wait
Follow the Decision
agestarts at20.hasPassis true, and C++ prints it as1.- The entry check succeeds for age
20with a pass. resultbecomesenter.- The program prints
age=20,hasPass=1, andresult=enter. | age | hasPass output | result | | --- | --- | --- | | 15 | 1 | wait | | 20 | 1 | enter | | 20 | 0 | wait | | 70 | 1 | enter |
Exercise: bool_logic.cpp
Reproduce result=enter, then use the pinned age and hasPass variants to predict which rows print wait.