Free Hosting

Boolean Values


The next data type we’re going to look at is the boolean data type. Boolean variables only have two possible values: true (1) and false (0).
To declare a boolean variable, we use the keyword bool.
1
bool bValue;
When assigning values to boolean variables, we use the keywords true and false.
1
2
bool bValue1 = true; // explicit assignment
bool bValue2(false); // implicit assignment
Just as the unary minus operator (-) can be used to make an integer negative, the logical NOT operator (!) can be used to flip a boolean value from true to false, or false to true:
1
2
bool bValue1 = !true; // bValue1 will have the value false
bool bValue2(!false); // bValue2 will have the value true
When boolean values are evaluated, they actually don’t evaluate to true or false. They evaluate to the numbers 0 (false) or 1 (true). Consequently, when we print their values with cout, it prints 0 for false, and 1 for true:
1
2
3
4
5
6
7
bool bValue = true;
cout << bValue << endl;
cout << !bValue << endl;
 
bool bValue2 = false;
cout << bValue2 << endl;
cout << !bValue2 << endl;
Outputs:
1
0
0
1
One of the most common uses for boolean variables is inside if statements:
1
2
3
4
5
bool bValue = true;
if (bValue)
    cout << "bValue was true" << endl;
else
    cout << "bValue was false" << endl;
Output:
bValue was true
Don’t forget that you can use the logical not operator to reverse a boolean value:
1
2
3
4
5
bool bValue = true;
if (!bValue)
    cout << "The if statement was true" << endl;
else
    cout << "The if statement was false" << endl;
Output:
The if statement was false
Boolean values are also useful as the return values for functions that check whether something is true or not. Such functions are typically named starting with the word Is:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
 
using namespace std;
 
// returns true if x and y are equal
bool IsEqual(int x, int y)
{
    return (x == y); // use equality operator to test if equal
}
 
int main()
{
    cout << "Enter a value: ";
    int x;
    cin >> x;
 
    cout << "Enter another value: ";
    int y;
    cin >> y;
 
    bool bEqual = IsEqual(x, y);
    if (bEqual)
        cout << x << " and " << y << " are equal"<<endl;
    else
        cout << x << " and " << y << " are not equal"<<endl;
    return 0;
}
In this case, because we only use bEqual in one place, there’s really no need to assign it to a variable. We could do this instead:
1
2
3
4
if (IsEqual(x, y))
    cout << x << " and " << y << " are equal"<<endl;
else
    cout << x << " and " << y << " are not equal"<<endl;
IsEqual() evaluates to true or false, and the if statement then branches based on this value.
Boolean variables are quite refreshing in their simplicity!
One additional note: when converting integers to booleans, the integer zero resolves to boolean false, whereas non-zero integers all resolve to true.

0 comments:

Blogger Template by Clairvo