【C言語】stdbool.hを使って出来ることと典型的な使い方【標準ライブラリ】
stdbool.hとは?
「stdbool.h」は、C言語で論理型(真偽値型)を使用するために提供されるヘッダファイルです。このヘッダをインクルードすることで、C言語で「bool」型を使えるようになります。従来のC言語では、論理型は整数型(0 または 1)で表現されていましたが、「stdbool.h」を使用することで、より明確に真偽値を扱うことができます。
「stdbool.h」を使うことで、コードの可読性や保守性が向上し、誤解を防ぐことができます。
真偽値型の使い方
「stdbool.h」をインクルードすると、C言語において「bool」という型が使用可能になります。この型は、_Bool
型のエイリアスであり、true
(真)またはfalse
(偽)の値を取ります。従来のC言語では、整数型を使って論理値を表現していましたが、これにより、論理値を意味する型として「bool」を使えるようになります。
#include <stdbool.h>
int main() {
bool is_valid = true; // true(真)を代入
bool is_empty = false; // false(偽)を代入
if (is_valid) {
printf("有効です。\n");
} else {
printf("無効です。\n");
}
return 0;
}
上記のコードでは、is_valid
という変数にtrue
を代入し、それが真である場合に「有効です。」と表示されます。
論理演算子との組み合わせ
「stdbool.h」を使った場合、論理演算子(&&
, ||
, !
)とも組み合わせて使用できます。これらの演算子を使用することで、複雑な論理条件を簡潔に表現できます。
#include <stdbool.h>
int main() {
bool a = true;
bool b = false;
if (a && !b) {
printf("aは真でbは偽です。\n");
}
if (a || b) {
printf("aまたはbは真です。\n");
}
return 0;
}
このコードでは、a
が真でb
が偽の場合に最初の条件が満たされ、「aは真でbは偽です。」と表示されます。また、論理和演算子||
を使って、a
またはb
が真である場合の条件も判定しています。
条件式での利用例
「bool」型は条件式の判定でも頻繁に使用されます。特に、関数の返り値として真偽値を返す場合や、条件分岐において使われます。
#include <stdbool.h>
bool is_even(int number) {
return number % 2 == 0;
}
int main() {
int num = 10;
if (is_even(num)) {
printf("%dは偶数です。\n", num);
} else {
printf("%dは奇数です。\n", num);
}
return 0;
}
このコードでは、is_even
関数が引数として渡された整数が偶数であるかどうかを判定し、その結果を真偽値として返します。main
関数では、is_even(num)
が真であれば「偶数です」と表示され、偽であれば「奇数です」と表示されます。
他の型との比較
「stdbool.h」を使用することで、整数型(0 または 1)と「bool」型を直接比較することができます。0
は偽(false
)、非ゼロ値は真(true
)として扱われます。
#include <stdbool.h>
int main() {
int num = 1;
if (num) {
printf("numは真として扱われます。\n");
} else {
printf("numは偽として扱われます。\n");
}
return 0;
}
ここでは、整数型のnum
が0でないため、「numは真として扱われます。」と表示されます。従来のC言語では整数型で真偽値を表現していましたが、「stdbool.h」を使うことで、コードの意図がより明確になります。