category: C / C++
DATE : 2006/10/04 (Wed)
DATE : 2006/10/04 (Wed)
C++ にあって C 言語(C99よりも前のもの)にはないものとして、bool 型の存在が挙げられます。
bool 型とは、真偽値を表す型で、true と false の2値からなります。
(;^ω^)Java で言う boolean 型ですね
ただし、true と false はそれぞれ int 型に変換できます。具体的には、true が 1、false が0となります。
(;^ω^)Java では boolean 型は他の型に変換できませんが、C 言語の条件分岐は 0 が偽、0以外が真という扱いでしたから、その名残なのでしょう
例えば、次のように bool 値を表示するとします。
cout << true << endl; cout << false << endl;
すると、次のような結果になります。
1 0
このように bool 値そのものが int 値と同じように扱えるため、条件分岐の際には bool 値をそのまま使います。
bool isValid = check(); if (isValid) { // OK } else { // ERROR }
(;^ω^)ここらへんは、Java と同じような書き方になりますね
ちなみに、false は int 値の 0 と等しいため、NULL ポインタも false と等しくなります。
すると、NULL チェックは次のように書けます。
// 処理に成功した場合は生成した Object を、 // 処理に失敗した場合は NULL ポインタを返す関数 Object* createObject() { ... } int main() { Object* object = createObject(); // NULL チェック if (object) { // OK } else { // ERROR } }
0(NULL ポインタ)以外は(当然のことながら)非0なので、NULL ポインタでなければ上の if 文は成立します。
PR
●この記事にコメントする
忍者ブログ [PR]