返回 (a) 与返回 a

return (a) vs. return a

本文关键字:返回      更新时间:2023-10-16

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

有什么区别?

完全没有区别。

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

出于这个原因,你不应该把它读成return( a );而是return (a);我认为区别是微妙但明确的,括号不适用于返回,而是适用于 a。

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

你也可以写一些类似的东西...

int x = (((100)));

你也可以写一些类似的东西...

printf("%dn", (z));

正如有人在评论中所说,现在有 C++11(C++ 语言的 2011 版(的新运算符decltype.这个运算符介绍了一个新示例,其中(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"

正如我所说,学生不会对此感兴趣,太深奥,它仅适用于至少支持部分C++11标准的编译器(如GCC 4.5+和Visual Studio 2010(。

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

int a;
std::cout << typeid(a).name() << std::endl; // will print "int"
std::cout << typeid((a)).name() << std::endl; // will print "int" !!!!

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

return

是一个函数。

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

例子

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