C++スコーラ

bool型

最終更新:

cschola

- view
管理者のみ編集可
今回はTIPSです。
TIPS…知らなくてもいいけど知っておくと便利なこと。

bool型

bool型は 0 か 1 の情報しか持ちません。
真か偽のどちらか一方になるような場合に有効です。
0 は 偽 、false になります。
1 は 真 、true になります。 

if文や while文と相性が良いです。
bool coin = true;

if(coin){
	printf("コインは表です。\n");
}
else{
	printf("コインは裏です。\n");
}
実行したら true の部分を false に変えてもう一度実行してみましょう。
bool flag = true;

int num = 0;

while(flag){
	printf("5を入力するまで終わりません。\n");

	scanf_s("%d",&num);

	if(num == 5){
		flag = false;
	}
}
次のプログラムは上のプログラムと同じ画面表示になります。
int num = 0;

while(true) {
	printf("5を入力するまで終わりません。\n");

	scanf_s("%d",&num);

	if(num == 5) break;
}

bool型を返す関数

関数の返り値として bool型 を使うこともできます
// 2つの数値に0が入ってるかを返す関数
bool search_0(int a, int b){
	return a == 0 || b == 0;
}

int main(){
	int a = 0;
	int b = 0;

	printf("数値を2回入力してください。\n");
	scanf_s("%d%d", &a, &b);

	if(search_0(a ,b)){
		printf("aかbに0がはいってる。\n");
	}
	else {
		printf("aもbも0ではない。\n");
	}
}

練習問題

次のようなプログラムを作ってください。(プログラムでbool型の変数を利用すること)
第1問
 bool型の変数 light を作り 真なら照明がついています。偽なら照明がついていません。
 と表示する。
第2問
 整数値を二つ受け取り、二つの合計が100を超えるかどうかを判断する IsSumAbove100関数を作り、main関数の中で100を超えるかどうかの表示を行ってください。

第3問
 実数値を一つ受け取り、小数点以下の数値が存在するか調べる IsRealNumInteger関数を作り、main関数の中で小数点以下の数値が存在するかどうかの表示を行ってください。

第4問
 0 か 1 の乱数を生成し、0ならfalse、 1ならtrueを返す GetRandFlag関数を作成し、他の関数でtrueかfalseの表示を行ってください。

補足

この回で扱ってきた bool型は実はC言語の機能ではありません。
C++言語の機能です。
C言語で使うには <stdbool.h> というヘッダファイルをインクルードするか、自分で定義する必要があります。
しかし、C言語とC++言語には互換性があり、Visual Studio では両方をサポートしている(読み込むことができる)ため、
C言語とC++言語を混ぜたプログラムを書いても機能することができます。
C++言語はC言語の機能を拡張しつつ、
過去のC言語で書かれたコードも読み込めるように開発された言語です。
そのため、C言語と混ぜて書いても全く問題ありません。
しかし、純粋なC言語しか使えない環境では bool型をはじめとするC++言語の機能は使えないので注意しましょう。
目安箱バナー