Cではtrueは0ではないものです(しかし、状態の値を定義するのにかなり頻繁にenumを使用します)。だから、真実のためのテストを行うために、私たちは、次の操作を行うことができます。Triboolsを扱う方法
そこにいくつかの議論があるが、自分自身や他の人がすることを好むtypedef enum
{
FALSE,
TRUE
} BOOL;
// Some function
BOOL n = isTrue();
if (n)
{
// Do something
}
:
if (n == TRUE)
{
// Do something
}
しかしisTrue()
関数が値を返されたいくつかの理由であれば真以外の場合は1ではなく、真は偽と見なされます。
私は最初の方法がそれを行う方法でなければならないことを示すコードレビューを行ってきました。しかし、私は突然、値が設定されていないときに第3の状態のアイデアが必要になることを突然認識しました。しかし、C言語でこれを行うことも可能ですが、最初の方法でブール値の比較を行うことは可能ですか?この "NULL"値に他の値を代入すると、それはまだ真として記録されます。
IMHO最初の亜種は、第2の亜種よりも優先されない**です。 2番目の変数は 'isBlue'などの適切な変数名を持たないかぎり、読みやすくなります。 – Matthias
@Matthias「TRUE」が標準で定義されていない理由であれば、使用する値は 'true'または' 1'です。しかし、ブールの場合、最初の方が本当に好ましいです。これについては、これはポインタのような他の型のためだと話すことができましたが、 'bool'のためではありません。 –
ブーリアンがC標準の型として存在するかどうかは確かではありませんでした。私が使用したほとんどの場所は、TRUEとFALSEのために定義された列挙型を持つ傾向があります。 – Firedragon