0

ブール変数はデフォルトで NO です。

BOOL first;
BOOL second;

if (first != second) {
    NSLog(@"Yes");
}else{
NSLog(@"NO");
}

出力は: はい

しかし、1 番目と 2 番目に NO を割り当てると、'NO' が出力されます。

first = NO;
second = NO;

if (first != second) {
    NSLog(@"Yes");
}else{
NSLog(@"NO");
}

出力は: いいえ

問題はどこだ?または、ブール変数はデフォルトで正確に NO を取る必要がありますか? またはコンパイラに依存しますか?

Xcode 4.2 バージョンを使用しました。問題がどこにあるのかわかりません。例を挙げて説明してください。前もって感謝します。

4

2 に答える 2

3

ローカル変数はデフォルトでは初期化されません。それらの中にランダムなゴミが入ります。BOOL first = NO;妥当な値が必要な場合は、で初期化する必要があります。

于 2012-07-11T13:26:50.507 に答える
1

C と同様に、Objective C には Boolean の実数型がありません。を見ると/usr/include/objc/objc.h、次のことがわかります。

#define YES             (BOOL)1
#define NO              (BOOL)0

だからあなたのコードは言っています

if (0 != 0) {
   ...
}

これは決して真実ではありません。

于 2012-07-11T13:28:43.770 に答える