' P '

whatever I will forget

C++ boolappha/notboolalpha、数字比較時の注意点

bool型変数の値の表示を0/1 -> True/Flaseに切り替えたい場合

C++は下記boolalpha/notboolalphaマニュピレーターを使用することでbool型変数の表示方式を切り替えることができる

#include <iostream>

using namespace std;

int main() {
    
    //cout << boolalpha;
    bool equal {false};

    int num1 {0};
    int num2 {1};
    equal = num1 == num2;
    cout << equal << endl;
    return 0;
}

上記の場合、何もしていないので結果は0 (false)と表示された。 0/1のどっちがTrue/False?とわからなくなる場合もあるし、わかりやすくしたい場合は cout << boolalpha;の部分をコメントアウトする。 そうすれば、ちゃんとFalseと表示されるのでわかりやすい。

数値比較時の注意点

double型などの小数点を含む数値を比較する場合、注意が必要な場合がある。 例えば上記コードで

    double db1 {10.0};
    double db2 {9.9999999999999999999};

などを比較した場合、結果はTrueとなるので注意。
*ちなみに、9.999999999999999まではfalseと表示された。 double型は少数桁15まではOKなのか?