ブーリアン型
Visual Basic には Boolean 型があり、比較演算の結果はこの型となる。16ビット(2バイト)の整数として格納されるが、値は True(-1) と False(0) しかない。以下に例を示す。
なお、OLE/COM、特にOLEオートメーションで使用される論理型 VARIANT_BOOL も、Visual Basic の Boolean 型と同一である。VARIANT_TRUEおよびVARIANT_FALSEは<wtypes.h>にて以下のように定義されている。
なお、こういったシンボルを定義した場合、TRUE は代入のためのみに用い、(cond == TRUE) のように比較に使用してはならない。cond の値が0でもなく1でもないとき、C言語としての意味では真であるにもかかわらず、TRUEとの比較判定式は偽になることで混乱や不具合を招くからである。
正しい例: if (cond) {...}、if (!cond) {...}、if (cond != FALSE) {...}、if (cond == FALSE) {...}
誤った例: if (cond == TRUE) {...}、if (cond != TRUE) {...}
好ましくない例: if (i < 0 == TRUE) {...}、if (i < 0 != TRUE) {...}、if (i < 0 == FALSE) {...}、if (i < 0 != FALSE) {...}
そもそも、(条件 == TRUE) という表現は無意味に冗長であり、単に (条件) と書くべきである。もし、(条件 == TRUE) と書くことが何かを明示していて良い表現だというのなら、...(((条件 == TRUE) == TRUE) == TRUE) == TRUE... は、もっと良い表現だということになる(次を参照のこと http://www.kouno.jp/home/c_faq/c9.html#2 、亀がアキレスに言ったこと)。