繁体   English   中英

返回(a)与返回a

[英]return (a) vs. return a

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

有什么不同?

没有任何区别。

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

因此,您不应将其视为return( a ); 但作为return (a); 我认为区别是微妙但明确,括号不适用于返回,而是适用于。

((((a))))(a)a相同。

你也可以写点像......

int x = (((100)));

你也可以写点像......

printf("%d\n", (z));

正如有人在评论中所说,现在,使用C ++ 11(2011版C ++语言)新的运算符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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM