2013-04-29 55 views
0

當我用C語言編寫程序時,我想出了一個我無法弄清楚的問題。但我檢查,如果條件在if語句滿足在想,如果有以下任何區別:C如果條件差異

if(ptr != NULL) 
or 
if(ptr) 

對我來說,我覺得這兩個都是正確的,但在C世界第二一個會被更多地使用,並且在Java世界中,第一個被更多地使用。另一個更正確嗎?

+0

第一個顯然更清楚,雖然退伍軍人會認識到第二個是什麼。另見http://stackoverflow.com/q/459743 – 2013-04-29 16:09:00

+0

他們都是正確的。並且都傳達不同的編程習語。 – StoryTeller 2013-04-29 16:09:09

+0

在java世界中,第二個是無效的,所以自然地,首選項將是第一種形式。 – FatalError 2013-04-29 16:09:59

回答

1

兩者都是正確的和等同的。

如果指針是NULL,則指針本身的計算結果爲false,否則指向true

3

在C中,任何評估爲0(零)的值都是「false」,而任何非零值都是「true」。

因此,當ptrNULL,這兩個if條件結束工作以同樣的方式:

if (ptr != NULL) = if (0 != 0) = if (0)

和:

if (ptr) = if (0)

你讓人們辯論哪一個更好,但你會看到兩個代碼。第一個更清楚,因爲它更加明確。第二個更短。兩者在技術上都是正確的和等同的。

+0

NULL始終不等於0。有一些平臺是NULL!= 0 – MOHAMED 2013-04-29 16:21:17

+0

@MOHAMED - 我從來沒有聽說過。什麼平臺? – 2013-04-29 16:23:43

+0

http://stackoverflow.com/questions/15616177/is-null-false-in-c-and-c-anything-more-than-0x0-0b0-0-0和http://c-faq.com /null/machexamp.html – MOHAMED 2013-04-29 16:26:23