经常在ANSI C代码中,我可以看到括号将单个返回值包围起来。
喜欢这个:-
int foo(int x) {
if (x)
return (-1);
else
return (0);
}
在这种情况下,为什么在返回值周围使用()?有任何想法吗?我看不出原因。
确实没有理由...这只是旧约定。
为了节省空间,程序员通常会在返回行中而不是在返回行中进行最终的数学运算,并且确保大多数都位于括号内,以便更轻松地看到返回的是单个语句,如下所示:] >
return (x+i*2);
代替
int y = x+i*2; return y;
括号成为一种习惯,它被卡住了。
返回语句中的括号指示编译器您打算将此值返回堆栈而不是内存中。
在return语句中使用括号表明对C/C++
语法的掌握不足。就这么简单。但这并不像把所有东西都放在花括号中一样糟糕:
实用但不太可能的动机是,如果在值周围加上括号,则可以将return定义为宏,然后插入一些日志记录代码来监视所有返回值。
我的个人风格是在表达式复杂的情况下使用括号;例如,
In the original C specification, parentheses were required around the return value.虽然现代C编译器和ANSI C标准不需要它们,但是括号的存在并不影响返回值,并且程序员有时出于习惯与风格上的一致性,仍然出于习惯,不熟悉标准而将它们包括在内需要它们的约定,或者可能是为了向后兼容。
有几个原因:
当您返回示例中的-1时,我认为它在圆括号中更具可读性,因为减号更明显:
也许这是习惯,毕竟,带给我们Unix和C语言的人们来自Multics项目。 Multics是用PL / I编写的,并且在PL / I中括号是必需的。
我已经与至少一位认为return was
[通常在使用括号的情况下,我认为这只是为了提高可读性(例如,Ruby支持不带括号的方法调用,但用括号将参数括起来,但最近的书籍和文章建议不要这样做)。