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 件のコメント:
コメントを投稿