2009/11/12

BOOL型について

C言語とOBJCではブールの表記が異なる。

C -> bool
OBJC -> BOOL

といっても大文字か小文字の違いのみ。Xcodeではどちらも使用できるが、返り値が異なる。ここが大きな違いと言えるのではないだろうか。

C ->「true」or「false
OBJC -> 「YES (1)」or「NO (0)

上記の通り、OBJCにおけるBOOLは水面下で「1」と「0」の返り値を扱っている。
BOOLではこういった8ビットの値を使っているが、8ビット以上の値が返ってくると「NO」をとして扱われる。
サンプルプログラム「BOOL  Party」を用いたBOOLの使い方の説明があった。

*コードをそのままコピペすると宣言部の山括弧がブログの仕様上、HTMLのタグとして認識されてしまうSHITな状況なのでコードは画像で貼付けた。

 
areIntsDiffent
ここではint型の2つの値 (thing1, thing2)を宣言、比較して同じならNOを、異なるならYESを返す。


NSString  *boolString (BOOL yesNo)
BOOL型で宣言されたyesNoに対して(BOOL型として)返って来た値がNOならばNOを、YESが返って来たらYES文字列として返す


int main...以降は主な処理。
BOOL 型でareTheyDifferentを宣言し、それに対して2つの値(5と5)をareIntsDifferentの処理にかける。この時点でareIntsDifferentにはBOOL型のNOが格納されている。それを文字列として表示するために、NSLogの内部でboolString(areTheyDifferent)とすることでBOOL型のNOをNSString型のNOにする。(boolString(NO)と同意)

同様の処理を 23と42の値で行うと、最終的にNSString型のYESが返ってくる。最期に0を返すことでプログラム終了。

といった具合だろーか。
ちなみに出力結果はコレ。



これでBOOLの使い方に付いては終了。

5と5は違う? NO
23と42は違う? YES

幼稚園児でも分かりますねこんなの。でも、英語の本読んでプログラムでこれできた時の爽快感と言ったら、、、くぅっ。

相変わらずペースはクソ遅いけど、順調に進んでます。
本のペースはと言いますと、次のステップとしてIndirectionについて読んでいます。日本語に訳すと、、、回り道でいいのかな。とにかく連呼してるんで、「Indirectionは、Indirection。」という風に解釈しちゃいます。問題は中身っす。
その一環としてmain (int argc, const char *argv[])についても理解しつつあります。(やっとかよ。)
詳細はまた明日!すみません、寝させてくだしあ。。。



0 件のコメント:

コメントを投稿