通常在ANSI C代码中,我可以看到括号中的单个返回值.
像这样:-
int foo(int x) { if (x) return (-1); else return (0); }
为什么在这些情况下使用返回值周围的?有任何想法吗?我认为没有理由.
真的没有理由......这只是旧约.
为了节省空间,程序员经常在返回行中进行最后的数学运算,而不是在它自己的行上进行最后的数学计算,并且parens确保主要是为了让它更容易看到它是返回的单个语句,如下所示:
return (x+i*2);
代替
int y = x+i*2; return y;
括号成了一种习惯而且卡住了.
一个实际但不太可能的动机是,如果你在值周围加上括号,你可以将return定义为宏,然后插入一些日志代码来观察你的所有返回.
我的个人风格是如果有复杂的表达则使用括号; 例如,
return (a + b);
但如果表达式是一个简单的术语,则不要使用它们
return a;
我不能说为什么我这样做; 就是我很久以前买的东西.
顺便说一句,我认为让它看起来像一个函数调用,像这样:
return(a); // ugh
难以置信的丑陋和错误.
在原始C规范中,返回值周围需要括号. 虽然现代C编译器和ANSI C标准不需要它们,但括号的存在不会影响返回值,程序员有时仍会将它们排除在习惯之外,不熟悉标准,以便与需要它们的风格约定保持一致,或者可能是为了向后兼容.
有几个原因:
如果/当/为/ etc中.是必须具有parens的所有控制关键字.因此,总是把它们放回去似乎很自然.
sizeof是唯一可以拥有它们的其他关键字,除了在某些情况下你必须使用parens.所以更容易养成总是使用parens的习惯.对于sizeof,这意味着一个逻辑:如果可以,总是这样做.
case/goto是你从不使用parens的唯一关键字.......人们倾向于认为这些是特殊情况(并且他们都喜欢从其他控制关键词中脱颖而出,尤其是goto).
当你在例子中返回-1时,我认为用括号更可读,因为减号更明显:
return 1
要么
return -1
要么
return (-1)