Objective-C では YES/NO、TRUE/FALSE、true/false に違いはありますか? 質問する

Objective-C では YES/NO、TRUE/FALSE、true/false に違いはありますか? 質問する

本当に簡単な質問です。これらの値には違いがありますか (また、BOOL と bool には違いがありますか)? 同僚が、Objective-C ではこれらが異なる値に評価されると言っていましたが、それぞれの .h ファイル内の typedef を見ると、YES/TRUE/true はすべて として定義され1、NO/FALSE/false はすべて として定義されていました0。本当に違いがあるのでしょうか?

ベストアンサー1

私はそこに信じているboolとの違いについてはBOOL、この Web ページでその理由の説明を確認してください。
http://iosdevelopertips.com/objective-c/of-bool-and-yes.html

BOOLはプリミティブ型ではなく であるためunsigned char、 型の変数にはBOOLおよび 以外の値を含めることができますYESNO

次のコードを考えてみましょう:

BOOL b = 42;

if (b) {
    printf("b is not NO!\n");
}

if (b != YES) {
    printf("b is not YES!\n");
}

出力は次のようになります。

b は NO ではありません!
b は YES ではありません!

ほとんどの人にとってこれは不必要な懸念ですが、本当にブール値が必要な場合は を使用する方がよいでしょうbool。iOS SDK は一般にBOOLインターフェース定義で を使用するので、 を使用することをお勧めしますBOOL

おすすめ記事