C言語標準(C89)はブール型を定義していないため、true と false を使用すると、以下のエラーが発生します:
infinite.c:5:12: error: use of undeclared identifier 'true'
while (true) {
1 error generated.
make: *** [infinite] Error 1
C言語のマクロ定義を利用して設定できます:
//ブール型をマクロ定義
#define BOOL int
#define TRUE 1
#define FALSE 0
//ブール変数を定義
BOOL flag = FALSE;
列挙型(enum)を使用して定義することもできます:
typedef enum
{
true=1, false=0
}bool;
例
#include <stdio.h>
//n! を計算、nの値はmainで定義
int main(void)
{
int n = 10; //階乗を計算
int sum = 1; //階乗の結果を格納するために使用
typedef enum
{
true=1, false=0
}bool;
bool flag = false; //階乗計算のフラグ
int num = n; //ループ回数
while( !flag )
{
sum = sum * (num--);
//num=1のときループを終了
if( num == 1)
{
flag = true;
}
}
printf ("%d の階乗値は %d\n", n, sum);
return 0;
}
出力結果は:
10的叠乘值为 3628800
C99はさらにヘッダーファイル <stdbool.h> を提供しており、bool は _Bool を表し、true は 1 を表し、false は 0 を表します。stdbool.h をインクルードするだけで、ブール型を非常に便利に操作できます。
例
//stdbool.h をインクルードしてブール型を使用
#include <stdbool.h>
#include <stdio.h>
//n! を計算、nの値はmainで定義
int main(void)
{
int n = 10; //階乗を計算
int sum = 1; //階乗の結果を格納するために使用
bool flag = false; //階乗計算のフラグ
int num = n; //ループ回数
while( !flag )
{
sum = sum * (num--);
//num=1のときループを終了
if( num == 1)
{
flag = true;
}
}
printf ("%d の階乗値は %d\n", n, sum);
return 0;
}
出力結果は:
10的叠乘值为 3628800