我在某个C程序中看到了以下代码片段:
char *x;
if (s == NULL)
return(NULL);
if ((x = strdup(s)))
return x;
返回多余括号的目的是什么(NULL)?
答案 0 :(得分:5)
从下面的if
陈述来看,作者只是喜欢写括号。
理论上,由于NULL
是一个预处理器宏,你可以将它定义为不包含在parens中的东西,因此可能会有不同的行为,具体取决于它应该属于哪个表达式运算符优先级规则 - 在这种情况下,将它包装在额外的parens中会“更安全”。
实际上,这不会发生。即使考虑这样的场景也会让我觉得很脏,所以我无法想象实际做到这一点的人的命运会是什么。
答案 1 :(得分:4)
有两个原因:
return
定义为宏,以便在正常返回之前执行某种形式的额外日志记录。这些人都是坚果。答案 2 :(得分:2)
有些人喜欢回报。我唯一的狡辩是代码不一致。
答案 3 :(得分:2)
有些人将return
视为一种功能,因此他们会使用额外的括号。即使return
实际上是一个陈述。
请注意,其他一些人也将sizeof
视为标准库函数,并且喜欢在操作数是表达式时添加额外的括号。当然sizeof
是一个操作符而不是函数。
答案 4 :(得分:1)
在这种情况下,他们没有特定的目的。通常我更喜欢在括号中加上括号 您应该始终如一地放置它们或者根本不放它们。 这里不一致的一个可能的解释是NULL是一个宏,有些人习惯用括号括起宏,以确保它们被正确包含。</ p>