在C中,条件是:" if(a!= NULL)"与条件相同" if(a)"?

时间:2017-10-19 12:16:04

标签: c if-statement nul

让我们说a是一个指针,在为它分配内存后,我想检查内存是否已成功分配,我已经看到过两种方法:

if(a != NULL)

if(a)

第一个和第二个陈述之间有什么区别?

4 个答案:

答案 0 :(得分:2)

  

条件是:if(a != NULL)与条件if(a)相同?

他们达到了同样的目的。唯一真正的区别在于可读性。

它们的效果是一样的,因为它们会产生同样的结果。

NULL是一个几乎总是0的宏,所以:

if(a != NULL)

相当于:

if(a != 0)

非常类似于:

if(a)

因为它将检查表达式a的计算结果是否为真。

因此,如果a是指针,它们将是相同的。如果不是,则取决于NULL的定义方式(正如我所说的那样almost always 0)。

答案 1 :(得分:1)

根据c faq

  

if(p)等于if(p!= 0)

     

这是一个比较背景,所以   编译器可以告诉(隐式)0实际上是一个空指针   常量,并使用正确的空指针值。没有诡计   涉及到这里;编译器以这种方式工作,并生成相同的代码   对于这两种结构。空指针的内部表示   没关系。

答案 2 :(得分:0)

(a!= NULL)返回一个与(a)相同的布尔值。 如果内容等于0,则if语句返回false,否则返回true。 NULL表示0,所以如果a == 0则if返回false。 所以编译器完全一样。

希望它可以帮到你!

答案 3 :(得分:0)

没有功能差异;它们是等价的,它们都测试空指针。

任何偏好都纯粹是主观的。只需使用您喜欢的一个或您的项目/组织中的其他程序员所遵循的内容。