web-dev-qa-db-ja.com

Cでブールデータ型を使用する方法は?

私はただCでコードを書いていましたが、ブール/ブールデータ型を持っていないことがわかりました。 boolean/boolデータ型を返す機能を提供するために含めることができるCライブラリはありますか?

41
itsaboutcode

C99をサポートするコンパイラがある場合は、次のことができます。

#include <stdbool.h>

それ以外の場合は、必要に応じて独自に定義できます。使用方法(およびコードをC++としてコンパイルできるようにするかどうか)に応じて、実装は次のように簡単になります。

#define bool int
#define true 1
#define false 0

ただし、私の意見では、intを使用し、ゼロを使用してfalseを、非ゼロを使用してtrueを使用することもできます。それが通常Cで行われる方法です。

66
James McNellis

実際、C99にはブールデータ型がありますが、古いバージョンを使用する必要がある場合は、型を定義するだけです。

typedef enum {false=0, true=1} bool;
17
caveman

C99にはboolタイプがあります。それを使用するには、

#include <stdbool.h>
3
kavya

James McNellisの答えに代わるものとして、私は常にマクロの代わりにブール型の列挙を使用しようとします:typedef enum bool {false=0; true=1;} bool;。より安全なb/cであり、コンパイラに型チェックを実行させ、マクロ展開の競合を排除します。

1
ysap

C99導入_Bool組み込みの純粋なブール型として。番号 #includesが必要:

int main(void)
{
  _Bool b = 1;
  b = 0;
}

真のC99(またはそれ以降)準拠のCコンパイラでは、上記のコードは完全に正常にコンパイルされます。

0
alk

これには列挙型を使用できます。ライブラリは必要ありません。例えば

           enum {false,true};

falseの値は0になり、trueの値は1になります。

0
Sri Charan