当我用C编写程序时,我提出了一个我无法弄清楚的问题。我正在检查if语句中是否满足条件但是想知道以下内容之间是否存在任何差异:
if(ptr != NULL)
or
if(ptr)
对我而言,我觉得这两个都是正确的,但在C世界中,第二个将被更多地使用,而在Java世界中,第一个被更多地使用。一个比另一个更正确吗?
答案 0 :(得分:3)
在C中,评估为0
(零)的任何内容都是" false",任何非零值都是" true"。
因此当ptr
为NULL
时,这两个if
条件最终会以同样的方式运行:
if (ptr != NULL)
= if (0 != 0)
= if (0)
和
if (ptr)
= if (0)
你会让人们辩论哪个更好,但你会在代码中看到两者。第一个更清楚,因为它更明确。第二个是更短的。两者在技术上都是正确的和等价的。
答案 1 :(得分:1)
两者都是正确和等效的。
如果指针为false
,则指针单独评估为NULL
,否则评估为true
。