我知道,默认情况下,布尔变量为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版本。我不明白问题出在哪里。请举例解释任何一个。提前谢谢。
答案 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) {
...
}
这是不对的。