當我用C語言編寫程序時,我想出了一個我無法弄清楚的問題。但我檢查,如果條件在if語句滿足在想,如果有以下任何區別:C如果條件差異
if(ptr != NULL)
or
if(ptr)
對我來說,我覺得這兩個都是正確的,但在C世界第二一個會被更多地使用,並且在Java世界中,第一個被更多地使用。另一個更正確嗎?
當我用C語言編寫程序時,我想出了一個我無法弄清楚的問題。但我檢查,如果條件在if語句滿足在想,如果有以下任何區別:C如果條件差異
if(ptr != NULL)
or
if(ptr)
對我來說,我覺得這兩個都是正確的,但在C世界第二一個會被更多地使用,並且在Java世界中,第一個被更多地使用。另一個更正確嗎?
兩者都是正確的和等同的。
如果指針是NULL
,則指針本身的計算結果爲false
,否則指向true
。
在C中,任何評估爲0
(零)的值都是「false」,而任何非零值都是「true」。
因此,當ptr
是NULL
,這兩個if
條件結束工作以同樣的方式:
if (ptr != NULL)
= if (0 != 0)
= if (0)
和:
if (ptr)
= if (0)
你讓人們辯論哪一個更好,但你會看到兩個代碼。第一個更清楚,因爲它更加明確。第二個更短。兩者在技術上都是正確的和等同的。
第一個顯然更清楚,雖然退伍軍人會認識到第二個是什麼。另見http://stackoverflow.com/q/459743 – 2013-04-29 16:09:00
他們都是正確的。並且都傳達不同的編程習語。 – StoryTeller 2013-04-29 16:09:09
在java世界中,第二個是無效的,所以自然地,首選項將是第一種形式。 – FatalError 2013-04-29 16:09:59