C でブール値を使用する
今日のチュートリアルでは、C プログラミング言語でブール値を使用するために bool
、enum
、typedef
、および #define
を使用する方法を示します。
C のブール値
bool
(ブール型のデータ型) は、C99 以降でネイティブに使用できます。 このデータ型を使用するには、stdbool.h
ライブラリを含める必要があります。 C99 では、ネイティブ データ型は _Bool
として知られています。
一方、bool
は、stdbool.h
で定義されている標準ライブラリ マクロです。 _Bool
データ型のオブジェクトには 1 または 0 が含まれ、true
と false
は stdbool.h
ライブラリのマクロです。
これは、C プログラムに stdbool.h
が含まれていない限り、C プリプロセッサが #if true
を #if 1
として解釈することを意味します。 一方、C++ プリプロセッサは true
を言語リテラルとしてネイティブに認識しなければなりません。
C でブール値に bool
型を使用する
コード例:
// library to use `bool`
#include <stdbool.h>
// library to use `printf()`
#include <stdio.h>
// main function
int main() {
bool variableX = true;
if (variableX) {
printf("The value of 'variableX' is True");
} else {
printf("The value of 'variableX' is False");
}
return 0;
}
出力:
The value of 'variableX' is True
C99 以降であれば、_Bool
のエイリアスである bool
を使用できます。 bool
を使用するには、stdbool.h
という名前のライブラリ (ヘッダー ファイルとしても指定) を含める必要があります。 そうしないと、エラーが発生します。
bool
型を使用する実用的な例として、上記のプログラムを参照してください。
C のブール値に enum
を使用する
コード例:
// library to use `printf()`
#include <stdio.h>
// enum's declaration
typedef enum { false, true } boolean;
// main function
int main() {
boolean variableX = false;
if (variableX) {
printf("The value of 'variableX' is True");
} else {
printf("The value of 'variableX' is False");
}
return 0;
}
出力:
The value of 'variableX' is False
上記のコード スニペットは、C89/90 を使用している人、またはネイティブの bool
型を使用したくない人のためのソリューションです。 enum
関数を使用して bool
型を作成できます。
enum
(Enumeration とも呼ばれます) は、整数定数に名前を割り当てるために使用される C プログラミングのユーザー定義データ型です。 なぜ? 名前は、プログラムを読みやすく、理解しやすく、維持しやすくします。
bool
型の新しい名前を作成して、ブール値を使用します。 そのために、型に新しい名前を付けるために使用される typedef
キーワードを使用しています (このセクションのコード例を参照してください。ここでは、boolean である
bool型に新しい名前を付けています。
)。
上記のコードを実行すると、1つの enum
が bool
型として作成されます。 さらに、enum
の要素を false
と true
にします。
1 番目と 2 番目の位置は、false
が 0 を保持し、true
が 1 を保持します。
C のブール値に typedef
と #define
を使用する
ブール値に enum
を使用している 2 番目のアプローチの代替として、次の 2つの方法でブール値を使用できます。
コード例 1:
// library to use `printf()`
#include <stdio.h>
// declare a variable of `int` type
typedef int boolean;
// declare enum
enum { false, true };
// main function
int main() {
boolean variableX = true;
if (variableX) {
printf("The value of 'variableX' is True");
} else {
printf("The value of 'variableX' is False");
}
return 0;
}
コード例 2:
// library to use `printf()`
#include <stdio.h>
// declare a variable of `int` type
typedef int boolean;
// define macros
#define true 1;
#define false 0;
// main function
int main() {
boolean variableX = true;
if (variableX) {
printf("The value of 'variableX' is True");
} else {
printf("The value of 'variableX' is False");
}
return 0;
}
どちらのコード例も、以下に示す同じ結果を生成します。
出力:
The value of 'variableX' is True
コード例 2 では、C プログラムでマクロを定義するために使用されるプリプロセッサ ディレクティブである #define
(マクロ ディレクティブとも呼ばれます) を使用しています。