2011-05-28 96 views
0

我一直在阅读有关可可一些电子书,所以我可以学到更多,但我没有那么清楚这是什么类型的“如果”的意思是:这种“if”是什么意思?

if(!something) 
if(something) 

我假设:

if (something !=nil) 

意味着如果某件事不存在,对吗?

谢谢:)

+0

大多数编程语言都有一个布尔数据类型:http://en.wikipedia.org/wiki/Boolean_data_type – 2011-05-28 13:58:31

回答

8

在C一切未等于NULL0被认为是true

因此

if (!something) 

相同

if (!(something != nil)) 

并且因此相同

if (something == nil) 

在Objective-C的对象的情况下(如nil基本上NULL)。

所以if (something)基本上是if (something != nil)的短手。
if (!something)基本上是if (something == nil)的简称。

对于非Objective-C指针,您可以用NULL替换nil。 (nil或多或少仅语法糖反正。)

还可以使用此,以检查是否一个整数是未等于0
这样的条件if ([myArray count])true除非myArray是空的。

0

假设东西是一个指向NSObject的指针。

if(something) 

这将返回YES,如果事情是一个非空指针

if(!something) 

这将返回YES,如果事情是零。这在这种情况下,因为something是零,而!(未操作)反相,成为真正的,

if(something)相同if(something != nil)。但我认识的大多数程序员认为这是一种重言式,喜欢短一点的表达。

虽然我在这 - 你可能会看到这写为if(nil != something)。其原因是,如果由于意外,你写=而不是!=这会引发一个错误,因为你不能将值设置为零,但如果它是相反的,并且你错误地写了条件,它会将某些东西的值设置为零,这可能不是你想要做的。

+0

也谢谢! :D都非常有用! – pmerino 2011-05-28 14:06:08

+0

谢天谢地,**叮** **这些天警告你后者。 :) – Regexident 2011-05-28 14:06:09

+1

Mate - Clang现在或多或少地调试我的代码! – Abizern 2011-05-28 14:09:09

0

这是大多数基于C的语言的一般语法。你需要认识到的是,if语句会检查伪装中的表达式为false(零)或true(1或非零)。所以,当你说“if(something)”时,你基本上是问是否检查它是否为:1. true或false(对于布尔表达式); 2.零或非零(用于算术表达式); 3.空或有效地址(用于指针,字符串等)。

现在您需要记住“!”运算符用于否定表达式,即结果中的每个“0”位按位更改为“1”,反之亦然。所以,基本上你会检查结果的否定结果是否为真或非零。

简而言之,当“something”为true或非零时,您希望代码片段执行时使用“if(something)”。当你想要你的代码片段在“something”为false或零时执行时,你可以使用“if(!something)”。