ショートカット
ファシリテーター × あり方
コーディングの向こう側
Hello, ANOTHER world!
オブジェクト指向のはなし
プログラミングのはなし
C言語実力診断クイズ
eSkillBooks
オブジェクト指向のはなし

ブーリアンの使い方

解説

ブーリアン(bool型)変数は、工夫するほどいろいろな使い方ができて便利です。たとえば次のような使い方ができます。

処理の成功・失敗を保存する

部分的な処理の成功・失敗をあとで判定するために bool 値を使うことがよくあります。例えば次のような場合です。

SAMPLE CODE
bool bSuccess = false;
{
    for ( ... ) {
        if ( ... ) {
            bSuccess = true; // 成功
            break;
        }
    }
}

if ( bSuccess == true ) {
    // 成功時の処理
}
else {
    // 失敗時の処理
}

この方法は、手前の処理が成功したときだけ次の処理が可能な場合(例えばファイルのオープンと読み込み)にとくに有効です。

成功・失敗を返却する

例えばゼロ以上の int 値を返却する関数

int SomeFunc()

があったとします。この関数がエラー時に負の値を返却するとしたらどうでしょう。おそらく呼び出し側では次のようなコーディングが必要になります。

SAMPLE CODE
int nResult = SomeFunc();

if ( nResult >= 0 ) {
    // 通常の処理
}
else {
    // エラー処理
}

このようなコーディングをするためには、プログラマーはこの関数がエラーのときに負の値を返すことを知っていなければなりません。

問題なのは、うっかり忘れるかもしれないということです。この例では関数のプロトタイプを見ただけではエラーのことを思い出すことはできそうもありませんから、もしかするとプログラマーはエラー処理を忘れるかも知れません。

そこで、関数のプロトタイプを

bool SomeFunc( int *pResult )

のように変更します。すると、プログラマーはこの関数を使おうと思ってプロトタイプを見るたびに bool 型の戻り値に気付き、エラー処理のことを思い出すようになるでしょう。

なお、この場合の呼び出し側のコーディングはだいたい次のようになるでしょう。

SAMPLE CODE
int nResult = 0;

if ( SumeFunc( &nResult ) == true ) {
    ASSERT( nResult >= 0 );

    // 通常の処理
}
else {
    // エラー処理
}

(「オブジェクト指向のはなし」は1999年2月から2000年4月にかけて作成されたコンテンツです。)