C 如果条件不同
当我用C语言编写程序时,我提出了一个我无法理解的问题。我正在检查if语句中是否满足条件,但我想知道以下各项之间是否有任何区别:C 如果条件不同,c,C,当我用C语言编写程序时,我提出了一个我无法理解的问题。我正在检查if语句中是否满足条件,但我想知道以下各项之间是否有任何区别: if(ptr != NULL) or if(ptr) 对我来说,我觉得这两个都是正确的,但是在C世界中,第二个会被更多地使用,而在Java世界中,第一个会被更多地使用。一个比另一个更正确吗?这两个都是正确的,并且是等效的 如果指针为NULL,则指针单独计算为false,否则计算为true。两者都正确且等效 如果指针为NULL,则指针单独计算为false,否则计算为tr
if(ptr != NULL)
or
if(ptr)
对我来说,我觉得这两个都是正确的,但是在C世界中,第二个会被更多地使用,而在Java世界中,第一个会被更多地使用。一个比另一个更正确吗?这两个都是正确的,并且是等效的
如果指针为
NULL
,则指针单独计算为false
,否则计算为true
。两者都正确且等效
如果指针为
NULL
,则指针单独计算为false
,否则计算为true
。在C中,任何计算为0
(零)的值都是“false”,任何非零的值都是“true”
因此,当ptr
为NULL
时,这两个if
条件的工作方式相同:
if(ptr!=NULL)
=if(0!=0)
=if(0)
以及:
if(ptr)
=if(0)
你会让人们争论哪一个更好,但你会在代码中看到这两个。第一个更明确,因为它更明确。第二个较短。两者在技术上都是正确的和等价的。在C中,任何计算结果为
0
(零)的都是“假”,任何非零的都是“真”
因此,当ptr
为NULL
时,这两个if
条件的工作方式相同:
if(ptr!=NULL)
=if(0!=0)
=if(0)
以及:
if(ptr)
=if(0)
你会让人们争论哪一个更好,但你会在代码中看到这两个。第一个更明确,因为它更明确。第二个较短。这两种方法在技术上都是正确和等效的。第一种方法显然更清晰,尽管c级老兵会认识到第二种方法的本质。另请参见,它们都是正确的。两者都传达了不同的编程习惯用法。在java世界中,第二种是无效的,因此首选的形式自然是第一种形式。第一种形式当然更清楚,尽管c老手会认识到第二种形式是什么。另请参见,它们都是正确的。两者都传达了不同的编程习惯。在java世界中,第二种形式是无效的,因此首选形式自然是第一种形式。NULL并不总是等于0。有些平台是空的!=0@MOHAMED-我从没听说过。什么平台?而且很有趣。然而,这些链接表明
NULL
的计算结果为“值为0的整数常量”,尽管在某些平台上这种值的按位表示可能不是0x0。我相信我的答案仍然是正确的和有用的,因为我没有讨论if
条件的位表示。是的,没错。即使NULL不是0,但对于这些平台,NULL也被计算为0,因此您的答案是有效的。NULL并非始终等于0。有些平台是空的!=0@MOHAMED-我从没听说过。什么平台?而且很有趣。然而,这些链接表明NULL
的计算结果为“值为0的整数常量”,尽管在某些平台上这种值的按位表示可能不是0x0。我相信我的答案仍然是正确的和有用的,因为我没有讨论if
条件的位表示。是的,没错。即使NULL不是0,但对于这些平台,NULL也被计算为0,因此您的答案是有效的。