C如果条件不同

时间:2013-04-29 16:07:15

标签: c

当我用C编写程序时,我提出了一个我无法弄清楚的问题。我正在检查if语句中是否满足条件但是想知道以下内容之间是否存在任何差异:

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

对我而言,我觉得这两个都是正确的,但在C世界中,第二个将被更多地使用,而在Java世界中,第一个被更多地使用。一个比另一个更正确吗?

2 个答案:

答案 0 :(得分:3)

在C中,评估为0(零)的任何内容都是" false",任何非零值都是" true"。

因此当ptrNULL时,这两个if条件最终会以同样的方式运行:

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

if (ptr) = if (0)

你会让人们辩论哪个更好,但你会在代码中看到两者。第一个更清楚,因为它更明确。第二个是更短的。两者在技术上都是正确的和等价的。

答案 1 :(得分:1)

两者都是正确和等效的。

如果指针为false,则指针单独评估为NULL,否则评估为true