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 (マクロ ディレクティブとも呼ばれます) を使用しています。
