3.1 布林型態

程式做決策需要一種方式表達「真」和「假」。在 C++ 中,我們用 bool(布林)型態來表示這兩個值。

bool flag = true;   // 宣告一個布林變數,值為「真」
bool result = false; // 宣告一個布林變數,值為「假」

bool 只有兩種可能值:

  • true:真(1)
  • false:假(0)

當我們用 cout 輸出布林值時,預設會輸出 10

#include <iostream>
using namespace std;

int main() {
    bool is_pass = true;
    bool is_fail = false;

    cout << is_pass << endl;  // 輸出:1
    cout << is_fail << endl;  // 輸出:0

    return 0;
}

執行結果

1
0

用 boolalpha 輸出 true/false

有時候我們想讓布林值印成 truefalse 的字面意思,而不是 10。這時可以用 boolalpha

在看程式碼之前,要先釐清一個很容易誤會的地方:cout << boolalpha; 這一行並不是在「印東西」

在第一、二單元裡,你看到的 cout << 某個值 都是「把那個值印到螢幕上」。但 boolalpha 不是一個要被印出來的值,而是一個操縱符(manipulator)——你可以把它想成一個交給 cout設定開關,意思是:「從現在開始,布林值請印成 true / false,不要再印 1 / 0。」

所以執行 cout << boolalpha; 時,螢幕上不會出現任何字,它只是改變了 cout 接下來的顯示方式。這裡的 << 還是同一個符號,但作用從「印出一個值」變成了「把一項設定套用到 cout 上」。這個設定一旦打開,對後面每一次布林輸出都有效——來看下面的例子:

#include <iostream>
using namespace std;

int main() {
    bool is_pass = true;
    bool is_fail = false;

    cout << boolalpha;  // 這行不印東西,只是在設定 cout
    cout << is_pass << endl;  // 輸出:true
    cout << is_fail << endl;  // 輸出:false

    return 0;
}

執行結果

true
false

動手試試看

寫一個程式,宣告三個布林變數 morningafternoonevening,分別代表「是否是上午」「是否是下午」「是否是晚上」。用 boolalpha 輸出它們。