默认情况下将采用布尔变量?

时间:2012-07-11 13:21:55

标签: objective-c ios5 xcode4.2 boolean

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

BOOL first;
BOOL second;

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

OutPut是:是

但是当我给第一和第二分配NO时,我得到了'NO'。

first = NO;
second = NO;

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

OutPut是:否

问题出在哪里?或者布尔变量是否应该默认为NO?或者取决于编译器?

我使用过Xcode 4.2版本。我不明白问题出在哪里。请举例解释任何一个。提前谢谢。

2 个答案:

答案 0 :(得分:3)

默认情况下不会初始化局部变量;你随机乱扔垃圾。如果您希望它们具有合理的值,则应使用BOOL first = NO;对其进行初始化。

答案 1 :(得分:1)

与C一样,Objective C没有布尔的实数类型。如果你看/usr/include/objc/objc.h,你会发现:

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

所以你的代码在说

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

这是不对的。