2010-11-03 219 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。