返回(a)与返回a 我在C和C++代码中看到了两个代码。

返回(a)与返回a 我在C和C++代码中看到了两个代码。,c++,c,coding-style,C++,C,Coding Style,有什么区别吗?完全没有区别 官方语法是返回某物或返回 。此运算符引入了一个新示例,其中(a)与a不同,这非常深奥,有点离题,但我添加此示例只是为了完整性 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 <

有什么区别吗?

完全没有区别

官方语法是
返回某物
返回
因此,您不应将其解读为
return(a)但作为<代码>返回(a)
我认为两者的区别很微妙但很明显,括号不适用于return,而适用于a

(((a)))
(a)
相同,后者与
a
相同

你也可以写一些像

int x = (((100)));
printf("%d\n", (z));
你也可以写一些像

int x = (((100)));
printf("%d\n", (z));

正如评论中所说,现在,用C++ 11(C++语言的2011版本)新的操作符<代码> DeCytS> <代码>。此运算符引入了一个新示例,其中

(a)
a
不同,这非常深奥,有点离题,但我添加此示例只是为了完整性

    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"

返回
不是一个函数

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

例子

return a;
return (a || b);
return (a && (b || c));
return (a ? b : c);

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

因此,不要在自己的代码中添加返回语句的参数。是的,我绝对同意AShelly,但这样做没有错,除了让学生感到困惑。@MichaelPrice:确实有上下文的问题。例如,给定
inti
decltype(i)
int
,而
decltype((i))
int&
(i)
使其成为一个表达式,并返回表达式的类型,而
i
只是一个标识符。由于
return
只会使用该值,因此没有区别。“学生不会对此感兴趣”他们会这样做。(或者至少应该)意思是:不要学这种语言。设计师们都疯了。它只会变得更糟。@ildjarn:这(令人惊讶地)只是一个允许的优化,而不是必需的,所以从技术上讲,这取决于您特定的编译器。我看不出有什么不同。也就是说,我知道在MSVC2010中,给定
tfoo(tx)
,如果你做了
{return x;}
它会删除复制/移动,但是如果你做了
{return std::move(x);}
它会移动构造,永远不会删除。如果你问我的话,这有点傻。就我个人而言,我不会在任何一个括号中使用外括号:
返回A?b:c每次我看到return(x)时,我希望我是一个更暴力的人。唯一的区别是,你应该在任何充斥着前者的代码库中尖叫。请不要在你的问题标题中添加连字符。它不会改变它的排序顺序或任何东西。它所做的一切都破坏了搜索功能。