忍者ブログ
[179] [178] [177] [176] [175] [174] [173] [172] [171] [170] [169]

DATE : 2017/06/27 (Tue)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/10/04 (Wed)

C++ にあって C 言語(C99よりも前のもの)にはないものとして、bool 型の存在が挙げられます。

bool 型とは、真偽値を表す型で、true と false の2値からなります。

(;^ω^)Java で言う boolean 型ですね

ただし、true と false はそれぞれ int 型に変換できます。具体的には、true が 1、false が0となります。

(;^ω^)Java では boolean 型は他の型に変換できませんが、C 言語の条件分岐は 0 が偽、0以外が真という扱いでしたから、その名残なのでしょう

例えば、次のように bool 値を表示するとします。

cout << true << endl;
cout << false << endl;

すると、次のような結果になります。

1
0

このように bool 値そのものが int 値と同じように扱えるため、条件分岐の際には bool 値をそのまま使います。

bool isValid = check();

if (isValid) {
	// OK
}
else {
	// ERROR
}

(;^ω^)ここらへんは、Java と同じような書き方になりますね

ちなみに、false は int 値の 0 と等しいため、NULL ポインタも false と等しくなります。

すると、NULL チェックは次のように書けます。

// 処理に成功した場合は生成した Object を、
// 処理に失敗した場合は NULL ポインタを返す関数
Object* createObject() { ... }

int main() {
	Object* object = createObject();

	// NULL チェック
	if (object) {
		// OK
	}
	else {
		// ERROR
	}
}

0(NULL ポインタ)以外は(当然のことながら)非0なので、NULL ポインタでなければ上の if 文は成立します。

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
05 2017/06 07
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
05 2017/06 07
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)