首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >return (a)与return a

return (a)与return a
EN

Stack Overflow用户
提问于 2011-10-30 11:02:25
回答 3查看 1.1K关注 0票数 10

我已经在C和C++代码中看到了我一直在看的代码。

有什么关系?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-30 11:06:15

一点也没有区别。

官方语法是return something;return;,当然它是一个关键字,而不是一个函数。

由于这个原因,你不应该把它理解为return( a );,但作为return (a);,我认为区别是细微的,但很明显,括号不适用于return( a );,而适用于a。

((((a))))(a)相同,也与a相同。

你也可以写一些像这样的东西。

代码语言:javascript
复制
int x = (((100)));

你也可以写一些像这样的东西。

代码语言:javascript
复制
printf("%d\n", (z));

正如有人在评论中所说,现在,随着C++11 ( C++语言的2011版)的出现,有了新的运算符decltype。这个运算符引入了一个新的示例,其中(a)不同于a,这是相当深奥的,有点脱离主题,但我添加这个示例只是为了完整。

代码语言:javascript
复制
    int x = 10;
    decltype(x) y = x;   // this means int y = x;
    decltype((x)) z = x; // this means int& z = x;
    y = 20;
    z = 30;
    std::cout << x << " " << y << " " << z << std::endl;
    // this will print out "30 20 30"

正如我所说的,学生对此不会感兴趣,因为它太深奥了,而且它只能与至少支持部分C++11标准(如GCC 4.5+和Visual Studio2010)的编译器一起工作。

这也与typeid关键字的使用形成对比:

代码语言:javascript
复制
int a;
std::cout << typeid(a).name() << std::endl; // will print "int"
std::cout << typeid((a)).name() << std::endl; // will print "int" !!!!
票数 38
EN

Stack Overflow用户

发布于 2011-11-02 21:10:10

编写return x表明程序员理解return的含义。而return(x)则表示程序员错误地认为return是一种函数。

票数 11
EN

Stack Overflow用户

发布于 2011-10-30 22:58:42

return不是一个函数。

这更多的是一个风格上的问题。我个人不会在return语句中使用括号,除非它显示了操作顺序。

示例

代码语言:javascript
复制
return a;
return (a || b);
return (a && (b || c));
return (a ? b : c);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7943052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档