2010-11-03 181 views
2

我对C++来说比较新。这是一个我无法理解的if语句。需要帮助来理解C++语法

if ((ObjPtr = NewObjPtr) != NULL) 
{ 
    ... 
} 

什么是检查“!= NULL”?

谢谢。

+0

顺便说一句,'!= NULL'部分是多余的。 – Inverse 2010-11-03 18:48:49

回答

11

这将NewObjPtr指定为ObjPtr并检查ObjPtr是否为非空值。

它是等效于以下语句:

ObjPtr = NewObjPtr; 
if (ObjPtr != NULL) { ... } 
+2

备注:来自问题的代码是代码味道。它应该以简单/清晰的方式编写。 – Klaim 2010-11-03 18:37:18

+0

有问题的代码对于任何C++程序员来说都很简单,清晰和直接 - 尽管我会说通常有一个函数或其他表达式代替'NewObjPtr'。语法的好处在while循环中更容易看到。 – 2010-11-03 18:42:21

+0

@Klaim:我同意,但似乎OP不是作者=) – vitaut 2010-11-03 18:48:02

1

在C++等myVar = 5的表达将返回5. 因此,基本上此语法检查是否NewObjPtr不是NULL。

你可以说一个任务的值被传递到左边的

+1

你的意思是“赋值”而不是“断言”? – bjoernz 2010-11-03 18:30:40

+0

什么?这是否应该是C++和'>之间的某种混合体?这些断言与什么有关? – jalf 2010-11-03 18:33:46

+0

对,对不起。不应该熬夜这么晚。 – BastiBen 2010-11-04 06:42:37

1

C(C++)中的每个操作数都返回操作的结果。对于'='运算符,结果是分配的值。因此,检查ObjPrt和NewObjPrt是否为NULL。