返回多余括号的目的是什么(NULL)

时间:2012-01-18 17:41:12

标签: c

我在某个C程序中看到了以下代码片段:

char *x;

if (s == NULL)
    return(NULL);
if ((x = strdup(s)))
    return x;

返回多余括号的目的是什么(NULL)?

5 个答案:

答案 0 :(得分:5)

从下面的if陈述来看,作者只是喜欢写括号。

理论上,由于NULL是一个预处理器宏,你可以将它定义为包含在parens中的东西,因此可能会有不同的行为,具体取决于它应该属于哪个表达式运算符优先级规则 - 在这种情况下,将它包装在额外的parens中会“更安全”。

实际上,这不会发生。即使考虑这样的场景也会让我觉得很脏,所以我无法想象实际做到这一点的人的命运会是什么。

答案 1 :(得分:4)

有两个原因:

  1. 有些人真的喜欢无关紧要的括号。我没有,但这对任何人都没有伤害。
  2. 有些人喜欢在调试时将return定义为宏,以便在正常返回之前执行某种形式的额外日志记录。这些人都是坚果。

答案 2 :(得分:2)

有些人喜欢回报。我唯一的狡辩是代码不一致。

答案 3 :(得分:2)

有些人将return视为一种功能,因此他们会使用额外的括号。即使return实际上是一个陈述。

请注意,其他一些人也将sizeof视为标准库函数,并且喜欢在操作数是表达式时添加额外的括号。当然sizeof是一个操作符而不是函数。

答案 4 :(得分:1)

在这种情况下,他们没有特定的目的。通常我更喜欢在括号中加上括号 您应该始终如一地放置它们或者根本不放它们。 这里不一致的一个可能的解释是NULL是一个宏,有些人习惯用括号括起宏,以确保它们被正确包含。<​​/ p>