0

我知道,布尔变量默认为 NO。

BOOL first;
BOOL second;

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

输出是:是

但是当我将 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 回答