As mentioned in the citation, <span>bool</span> is a fundamental data type introduced in the ANSI/ISO C++ standard, specifically designed to represent logical values. Its introduction makes the code clearer and type-safe when expressing “true” and “false”.

Core Concepts:
-
Value: There are only two predefined literal values
<span>true</span>: Represents logical “true”.<span>false</span>: Represents logical “false”.
Underlying Implementation: At the low level, <span>bool</span> values are typically stored using one byte. <span>false</span> is stored as <span>0</span>, while <span>true</span> is usually stored as <span>1</span> (although the C++ standard only requires that <span>false</span> be 0 and <span>true</span> be non-zero, most compilers use 1).
Compatibility with Integers (Boolean Conversion):
- When a
<span>bool</span>value is used in a context that requires a numeric value (such as<span>int</span>),<span>true</span>converts to<span>1</span>, and<span>false</span>converts to<span>0</span>. - When any numeric value or pointer is used in a context that requires a
<span>bool</span>value (such as the condition of an<span>if</span>statement), non-zero values convert to<span>true</span>, while zero values convert to<span>false</span>. This is an inheritance from the C language tradition.
- Implicit Conversion: C++ allows implicit conversion between
<span>bool</span>values and numeric values.
Advantages:
- High Readability: Using
<span>bool</span>type and<span>true</span>/<span>false</span>makes the intent of the code clear at a glance. - Type Safety: The compiler can perform stricter type checks, avoiding potential errors.
Code Examples
The following examples demonstrate the usage of the <span>bool</span> type.
Example 1: Basic Definition and Output
#include <iostream>
int main() {
// Define and initialize boolean variables
bool isSunny = true;
bool isRaining = false;
std::cout << "Is it sunny? " << isSunny << std::endl; // Output: 1
std::cout << "Is it raining? " << isRaining << std::endl; // Output: 0
// Use std::boolalpha manipulator to output boolean values as "true" or "false"
std::cout << std::boolalpha;
std::cout << "Is it sunny? " << isSunny << std::endl; // Output: true
std::cout << "Is it raining? " << isRaining << std::endl; // Output: false
return 0;
}
Output:
Is it sunny? 1
Is it raining? 0
Is it sunny? true
Is it raining? false
Explanation:
- By default,
<span>std::cout</span>outputs<span>bool</span>values as<span>1</span>or<span>0</span>. - Using
<span>std::boolalpha</span>allows it to output as strings<span>"true"</span>or<span>"false"</span>. - Using
<span>std::noboolalpha</span>can revert to numeric output format.
Example 2: Boolean Conversion (Interaction with Integers)
#include <iostream>
int main() {
// 1. Conversion from numeric/pointer to bool (in conditional checks)
int balance = 1000;
bool hasMoney = balance; // balance is non-zero, so hasMoney is initialized to true
bool isZero = 0; // 0 is converted to false
std::cout << std::boolalpha;
std::cout << "Has money: " << hasMoney << std::endl; // Output: true
std::cout << "Is zero: " << isZero << std::endl; // Output: false
// In if statement, the condition expression is converted to bool
if (balance) { // Equivalent to if(balance != 0)
std::cout << "Your balance is not zero." << std::endl;
}
// 2. Conversion from bool to integer
bool myBool = true;
int asInt = myBool; // true is converted to 1
std::cout << "Boolean as integer: " << asInt << std::endl; // Output: 1
// In arithmetic operations, bool is also converted to integers
int sum = true + false + true; // Equivalent to 1 + 0 + 1
std::cout << "Sum of booleans: " << sum << std::endl; // Output: 2
return 0;
}
Output:
Has money: true
Is zero: false
Your balance is not zero.
Boolean as integer: 1
Sum of booleans: 2
Example 3: As Function Return Type and Parameter
<span>bool</span> type is very suitable as a return type for functions that perform checks.
#include <iostream>
// A function that returns a bool value, checking if a number is even
bool isEven(int number) {
// If the remainder when divided by 2 is 0, it is even, return true, otherwise return false
return (number % 2) == 0;
}
// A function that accepts a bool parameter
void printStatus(bool isActive) {
std::cout << std::boolalpha;
if (isActive) {
std::cout << "The status is: Active" << std::endl;
} else {
std::cout << "The status is: Inactive" << std::endl;
}
}
int main() {
int num = 4;
// Call isEven function, its return value is bool type
bool result = isEven(num);
std::cout << "Is " << num << " even? " << result << std::endl; // Output: true
// Can directly use function call in if statement, as it returns a bool value
if (isEven(num + 1)) {
std::cout << num + 1 << " is even." << std::endl;
} else {
std::cout << num + 1 << " is odd." << std::endl; // This line will be executed
}
// Call function that accepts bool parameter
printStatus(true);
printStatus(result); // Pass a bool variable
return 0;
}
Output:
Is 4 even? true
5 is odd.
The status is: Active
The status is: Active
Conclusion
<span>bool</span>type is a dedicated type in C++ for representing logical truth values, with values of<span>true</span>or<span>false</span>.- It has a close and intuitive conversion relationship with integers, preserving the flexibility of C while enhancing the expressiveness of the code.
- In scenarios where binary states such as “yes/no”, “on/off”, or “success/failure” need to be represented, the
<span>bool</span>type should be prioritized, greatly improving the readability and robustness of the code.