0

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

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

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

4

2 回答 2

3

在 C 中,任何计算结果为0(零)的都是“假”,任何非零都是“真”。

因此,当ptris时NULL,这两个if条件最终以相同的方式工作:

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

和:

if (ptr)=if (0)

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

于 2013-04-29T16:16:17.827 回答
1

两者都是正确和等价的。

单独的指针计算false指针是否为指针NULLtrue否则为指针。

于 2013-04-29T16:09:05.383 回答