Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でブール値(bool)を扱う方法:enumを使った実装例

C言語には、他の多くのプログラミング言語のような組み込みのブール型(bool)が標準では用意されていません。しかし、enum(列挙型)を活用することで、独自のブール値を簡単に定義できます。

enumによるbool型の作成

まず「boolean」という名前の列挙型を作成し、その要素として「false」と「true」を定義します。列挙子は宣言された順に0から順番に値が割り当てられるため、先頭のfalseは0、2番目のtrueは1という値を持つことになります。これにより、boolean型をあたかもブール型であるかのように扱えるようになります。

コード例

#include<stdio.h>
typedef enum {
    F, T
}
boolean;
main() {
    boolean my_bool1, my_bool2;
    my_bool1 = F;
    if(my_bool1 == F) {
        printf("my_bool1 is false\n");
    } else {
        printf("my_bool1 is true\n");
    }
    my_bool2 = 2;
    if(my_bool2 == F) {
        printf("my_bool2 is false\n");
    } else {
        printf("my_bool2 is true\n");
    }
}

出力結果

my_bool1 is false
my_bool2 is true

コードの解説

typedef enum { F, T } boolean; によって、F(0)とT(1)を要素とする新しい型「boolean」が定義されます。

  • my_bool1:F(false)を代入しているため、条件式 my_bool1 == F が成立し、「false」と表示されます。
  • my_bool2:値として2を代入しています。これはFでもないため、条件式が不成立となり、「true」と表示されます。

この例から分かるように、enumで定義した型は内部的には整数として扱われるため、0と1以外の値も代入可能です。厳密な真偽値のチェックが必要な場合は注意が必要です。

補足:C99以降のstdbool.hヘッダー

C99規格以降では、標準ライブラリの <stdbool.h> をインクルードすることで、bool 型と truefalse マクロが利用可能になっています。新しいプロジェクトではこちらを使用するのが一般的ですが、古いコンパイラやC89環境では、本記事のようにenumで自作する方法が有効です。

  1. Windows 10でBashを使う方法!Linuxサブシステム導入の完全ガイド

    Microsoftは年次開発者会議「Build」にて、Linuxの開発元であるCanonical社と協力し、Windows 10にBashシェルを搭載することを発表しました。このニュースはWindowsコミュニティだけでなく、Linuxコミュニティにも大きな反響を呼びました。誰もがその使い心地や導入方法、そしてなぜこの機能が存在するのかに関心を寄せています。そこで本記事では、今日すぐにWindows 10環境でBashを使えるようにするための手順を詳しく解説します。やや手間のかかる作業ですが、ガジェット好きの方ならぜひ挑戦してみる価値があるでしょう。注意:Windows上のUbuntu Bas

  2. Windows 7でXPモードを使用する方法|導入から初期設定まで徹底解説

    Windows 7は、リリース以来、全体的に優れたオペレーティングシステムとして高い評価を受けてきました。必要とされていた改善点が数多く盛り込まれ、新たな技術機能も搭載されています。 しかし、新しいOSにはつきものの課題として、Windows 7では旧バージョン向けのアプリケーションとの互換性(後方互換性)に問題が生じる場合があります。Microsoftはこの点を予期しており、Windows 7に「XPモード」を搭載することで対応しました。 XPモードを使用すると、Windows 7上の仮想マシン内でWindows XPを実行できます。これにより、古いアプリケーションやプログラムも必要に応じて