当前位置:  开发笔记 > 编程语言 > 正文

围绕返回值的括号

如何解决《围绕返回值的括号》经验,为你挑选了6个好方法。

通常在ANSI C代码中,我可以看到括号中的单个返回值.

像这样:-

int foo(int x) {
  if (x)
    return (-1);
  else
    return (0);
}

为什么在这些情况下使用返回值周围的?有任何想法吗?我认为没有理由.



1> Adam Haile..:

真的没有理由......这只是旧约.

为了节省空间,程序员经常在返回行中进行最后的数学运算,而不是在它自己的行上进行最后的数学计算,并且parens确保主要是为了让它更容易看到它是返回的单个语句,如下所示:

return (x+i*2);

代替

int y = x+i*2;
return y;

括号成了一种习惯而且卡住了.


当我像这样返回数学时,我倾向于这样做.我不知道,这就像我担心这个方法会在数学完成评估之前返回,或者是oO
为了节省空间?请解释.当然`返回x + i*2;`更短?
很高兴不只是我认为这是不必要的.;-)用于设置优先级的括号是可以理解的,但恕我直言,如上所述的返回语句应分为多个语句.提高可读性并且不容易出错.不敢对香肠表示法说不!;-)
"parens确保主要是为了让它更容易被看出它是一个单一的声明被返回" - 这甚至应该是什么意思?除了语法之外,你不能返回语句,它使用的空间比没有语句的空间大.
@MarcLehmann我不知道这是什么意思,或者它如何得到如此高的投票和接受。给我加上括号对我来说看起来很丑陋(如果我是国王,我什至可以为了`if`等删除它们)。至于“让我们更容易看到它是一个返回的语句”,首先,这是一个_expression_,而不是一个“语句”-还有什么-人们认为`return`是一个贪婪的运算符,而`return x + i * 2`可能会返回`x`并丢弃其余的?如果是这样,哇。还是这个答案真的在考虑可能跨越多行的长表达式?无论哪种方式,它都完全错过了自己的观点。

2> user10392..:

一个实际但不太可能的动机是,如果你在值周围加上括号,你可以将return定义为宏,然后插入一些日志代码来观察你的所有返回.


哇!它可能不太可能,但这是我听过的唯一的动机,这个习惯并不等于"哦,好吧,有人可能认为它看起来更好或更一致",其中任何一个看起来都不远对我很有吸引力.谢谢你的理智!

3> Kristopher J..:

我的个人风格是如果有复杂的表达则使用括号; 例如,

return (a + b);

但如果表达式是一个简单的术语,则不要使用它们

return a;

我不能说为什么我这样做; 就是我很久以前买的东西.

顺便说一句,我认为让它看起来像一个函数调用,像这样:

return(a);  // ugh

难以置信的丑陋和错误.


而且主观 - 我认为空间看起来更糟(这是相同但相反主观的).

4> rakslice..:

在原始C规范中,返回值周围需要括号. 虽然现代C编译器和ANSI C标准不需要它们,但括号的存在不会影响返回值,程序员有时仍会将它们排除在习惯之外,不熟悉标准,以便与需要它们的风格约定保持一致,或者可能是为了向后兼容.



5> James Antill..:

有几个原因:

    如果/当/为/ etc中.是必须具有parens的所有控制关键字.因此,总是把它们放回去似乎很自然.

    sizeof是唯一可以拥有它们的其他关键字,除了在某些情况下你必须使用parens.所以更容易养成总是使用parens的习惯.对于sizeof,这意味着一个逻辑:如果可以,总是这样做.

    case/goto是你从不使用parens的唯一关键字.......人们倾向于认为这些是特殊情况(并且他们都喜欢从其他控制关键词中脱颖而出,尤其是goto).



6> Stein G. Str..:

当你在例子中返回-1时,我认为用括号更可读,因为减号更明显:

return 1

要么

return -1

要么

return (-1)

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有