Objective Cのブールタイプ
1872 ワード
多くのプログラミング言語を学んだことがありますが、Booleanタイプを持っている例外はありません.objective Cも例外ではありません.
C言語には、true値とfalse値を持つブールデータ型boolがあります.Objective Cは、YES値とNO値を有する類似のタイプのBoolを提供する.興味深いことに、Objective CのブールタイプはC言語のブールタイプより10年以上早く誕生した.この2つの異なるBellタイプは共通のプログラムで共存できるが,Cocoaコードを記述する際にBoolを用いる.
注意すべき点は、Objective CのBOOLは、実際には8ビットの記憶空間を使用するシンボル付き文字列(singed char)タイプの定義(typedef)である.YESは1、NOは0と定義されています(#defineを使用).
Objective Cは、YES or NOのみを保存できる本格的なブールタイプとしてBoolを扱っていないためである.コンパイラはBOOLを8を2進数として認識し,YESとNOの値は単なる約束である.これは小さな問題を引き起こすが、1バイト以上の整形をBOOL変数にコピーすると、下位だけがBOOL値になる.
さあ、次に乾物、BOOLの使用機能例について.
実行結果:
注意すべき点:
経験豊富なC言語開発者として、areIntsDifferent()関数は以下のように略記されることが多い.
C言語では0以外の値はYESを返しますが、objective Cでは1はYESに等しくありません
もう1つの問題%d私たちはよく知っていますが、"%@"の意味は何ですか.boolString()はNSStringのポインタを返します.
C言語には、true値とfalse値を持つブールデータ型boolがあります.Objective Cは、YES値とNO値を有する類似のタイプのBoolを提供する.興味深いことに、Objective CのブールタイプはC言語のブールタイプより10年以上早く誕生した.この2つの異なるBellタイプは共通のプログラムで共存できるが,Cocoaコードを記述する際にBoolを用いる.
注意すべき点は、Objective CのBOOLは、実際には8ビットの記憶空間を使用するシンボル付き文字列(singed char)タイプの定義(typedef)である.YESは1、NOは0と定義されています(#defineを使用).
Objective Cは、YES or NOのみを保存できる本格的なブールタイプとしてBoolを扱っていないためである.コンパイラはBOOLを8を2進数として認識し,YESとNOの値は単なる約束である.これは小さな問題を引き起こすが、1バイト以上の整形をBOOL変数にコピーすると、下位だけがBOOL値になる.
さあ、次に乾物、BOOLの使用機能例について.
#import <Foundation/Foundation.h>
BOOL areIntDifferent(int thing1, int thing2){
if( thing1 == thing2){
return (NO);
}else{
return (YES);
}
}
NSSTRING *boolString(BOOL yesNo){
if(yesNo == NO){
return (@"NO");
}else{
return (@"YES");
}
}
int main(int argc, const char *argv[]){
BOOL areTheyDifferent;
areTheyDifferent = areIntDifferent(5, 5);
NSLog(@"are %d and %d different? %@", 5 , 5, boolString(areTheyDifferent);
areTheyDifferent = areIntDifferent(23, 42);
NSLog(@"are %d and %d different? %@", 23, 42, boolString(areTheyDifferent));
return (0);
}
実行結果:
are 5 and 5 different ? NO
are 23 and 24 different ? YES
注意すべき点:
経験豊富なC言語開発者として、areIntsDifferent()関数は以下のように略記されることが多い.
BOOL areIntDifferent(int thing1, int thing2){
return (thing1 - thing2);
}
C言語では0以外の値はYESを返しますが、objective Cでは1はYESに等しくありません
もう1つの問題%d私たちはよく知っていますが、"%@"の意味は何ですか.boolString()はNSStringのポインタを返します.