在ANSI C代码中,经常可以看到括号将单个返回值括起来。
像这样:-
int foo(int x) {
if (x)
return (-1);
else
return (0);
}
在这种情况下,为什么要在返回值周围使用()?有任何想法吗?我看不出有什么理由。
在ANSI C代码中,经常可以看到括号将单个返回值括起来。
像这样:-
int foo(int x) {
if (x)
return (-1);
else
return (0);
}
在这种情况下,为什么要在返回值周围使用()?有任何想法吗?我看不出有什么理由。
Answers:
确实没有理由……这只是古老的惯例。
为了节省空间,程序员通常会在返回行中而不是在返回行中做最后的数学运算,并且确保大多数都位于括号内,以便更轻松地看到返回的是单个语句,如下所示:
return (x+i*2);
代替
int y = x+i*2;
return y;
圆括号成为一种习惯,并且被卡住了。
return x+i*2;
短吗?
if
如果我是国王,我什至可以取消括号等)。至于make it easier to see that it is a single statement that is returned
,首先,这是一个表达式,而不是一个“声明”-还有什么-人们认为这return
是一个贪婪的运算符,并且return x+i*2
可能会返回x
并丢弃其余的?如果是这样,哇。还是这个答案真的在考虑可能跨越多行的长表达式?无论哪种方式,它都完全错过了自己的观点。
一个实用的但不太可能的动机是,如果在值周围加上括号,则可以将return定义为宏,然后插入一些日志记录代码来监视所有返回值。
在原始的C规范中,在返回值周围需要括号。 尽管现代C编译器和ANSI C标准不要求使用它们,但括号的存在并不影响返回值,并且程序员出于出于与需要它们的风格惯例的一致性的习惯,有时仍然出于习惯而不熟悉它们,或可能是为了向后兼容。
对于那些正在考虑C ++的人们,我应该补充一点:这个问题是关于C的,而C不是C ++;这是两种不同的语言,它们具有不同的标准,功能,难度级别以及出现的不同使用方式-无论它们有什么共同之处,将它们视为两个完全独立的事物都是明智的。有关涵盖C ++的类似问题,请参见返回括号中结果的括号是否有意义?。
通常在使用括号的情况下,我认为这只是为了提高可读性(例如,Ruby支持不带括号的方法调用,将参数括起来,但最近的书籍和文章则建议否则)。
在return语句中使用括号表明C/C++
语法缺乏把握。就这么简单。但这并不像将所有内容都放在花括号中一样糟糕:
int foo(int x) {
if (x) {
return (-1);
}
else {
return (0);
}
}
太多的程序员这样做。如果你们其中之一读过这本书,也许您想解释一下。