C でブール値を使用する

Mehvish Ashiq 2023年10月12日
  1. C のブール値
  2. C でブール値に bool 型を使用する
  3. C のブール値に enum を使用する
  4. C のブール値に typedef#define を使用する
C でブール値を使用する

今日のチュートリアルでは、C プログラミング言語でブール値を使用するために boolenumtypedef、および #define を使用する方法を示します。

C のブール値

bool (ブール型のデータ型) は、C99 以降でネイティブに使用できます。 このデータ型を使用するには、stdbool.h ライブラリを含める必要があります。 C99 では、ネイティブ データ型は _Bool として知られています。

一方、bool は、stdbool.h で定義されている標準ライブラリ マクロです。 _Bool データ型のオブジェクトには 1 または 0 が含まれ、truefalsestdbool.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つの enumbool 型として作成されます。 さらに、enum の要素を falsetrue にします。

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

著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook