Objective-C NSLogでBOOL型を表示するためには、フォーマット演算子は「%d」を使う


スポンサーリンク

BOOL型とは、真/偽、Yes/No、True/Falseなどの2択を表現するときに使う型のことである。
Objective-Cではこの値はYES/NOで表現される。

実際に見てみよう。

BOOL isEnd;
isEnd = YES;

if (isEnd) {
    NSLog(@"YESなので終了します。");
} else {
    NSLog(@"NOなので続行します");
}

さて、このBOOL型の値をフォーマット指定しを使って表示したらどうなるか?

ちょっと意外かもしれないが、OBjective-CのBOOL値は、%dというフォーマット指定子を使う。
YESのときは1、NOのときは0で出力される。

BOOL isEnd;
isEnd = YES;

if (isEnd) {
    NSLog(@"isEndを出力すると?(YES:1|NO:0):%d",isEnd);
} else {
    NSLog(@"isEndを出力すると?(YES:1|NO:0):%d",isEnd);
}

結果、以下のように表示されます。

isEndを出力すると?(YES:1|NO:0):1

BOOL型は、0がNOで、それ以外の値はYESと判断されます。
ちょっと見てみましょう。

BOOL isEnd;
isEnd = 100;

if (isEnd) {
    NSLog(@"YESの場合はこっち(YES:1|NO:0):%d",isEnd);
} else {
    NSLog(@"NOの場合はこっち(YES:1|NO:0):%d",isEnd);
}

BOOL isBoolZero;
isBoolZero = 0;

if (isBoolZero) {
    NSLog(@"YESはこっち:%d",isBoolZero);
} else {
    NSLog(@"NOはこっち:%d",isBoolZero);
}


結果、以下のように表示されます。

YESの場合はこっち(YES:1|NO:0):100
NOはこっち:0

ちなみに、YES/NOじゃなくても、TRUE/FAULSEでもOKです。

BOOL isTrue;
isTrue = TRUE;

if (isTrue) {
    NSLog(@"TRUEの場合はこっち(YES:1|NO:0):%d",isTrue);
}

BOOL isFalse;

isFalse = FALSE;
if (isFalse) {
    NSLog(@"hoge");
} else {
    NSLog(@"FALSEの場合はこっち:%d",isFalse);
}

結果、以下のように表示されます。

TRUEの場合はこっち(YES:1|NO:0):1
FALSEの場合はこっち:0

現場で通用する力を身につける iPhoneアプリ開発の教科書 【iOS 7&Xcode 5対応】 (教科書シリーズ)

現場で通用する力を身につける iPhoneアプリ開発の教科書 【iOS 7&Xcode 5対応】 (教科書シリーズ)