做“!”和“零”给出相同的结果?

时间:2010-11-22 20:05:24

标签: iphone objective-c

在objective-c中,!variable的最终结果与variable==nil相同我还认为我在某处读到iVars被初始化为“nil”(即o)但遗憾的是我看起来不可能找到我现在发现的地方。如果我是正确的,这是初始化为nil部分声明一个iVar还是与@property之类的东西相关联?

即。做这些评估相同......

if(!myObject) ...

if(myObject == nil) ...

干杯加里。

编辑:希望更清晰。

3 个答案:

答案 0 :(得分:3)

你的问题主题和问题正在提出不同的问题,所以......

回答问题主题:不,!nil完全不同。 !是一个运算符,它返回其操作数的逻辑否定(即!0返回1!,其他任何内容返回0),而nil是0的宏。

回答问题本身:是的,!foofoo == nil为对象变量提供相同的结果。是的,实例变量初始化为0.静态变量和全局变量也是如此。

答案 1 :(得分:1)

!是一个C逻辑运算符,表示(例如&&&意味着,||表示 )。

nil是表达单元化对象指针的方法。

应用于指针时,只要指针为NULLnil,表达式的值就为TRUE。

最后,if(!myObject)if(myObject==nil)具有相同的行为。

答案 2 :(得分:1)

在objective-c中,!是一个布尔运算符,返回布尔值或表达式结果的反面。在下面的例子中,myObj实际上将它的指针值评估为布尔值,零或非零。由于myObj是一个非零指针,因此计算结果为true。 !myObj将返回相反的情况,在这种情况下它将返回false。

id myObj = nil;
int x = 0;
if (myObj)
  x++;