返回(a)与返回a
我已经看过我一直在看的C和C ++代码。
有什么不同?
没有任何区别。
官方语法是return something;
或return;
当然它是一个关键字,而不是一个function。
因此,您不应将其视为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
是一种function。
return
不是一个function。
这更像是一种风格。 我个人不会在return语句中使用括号,除非它显示操作顺序。
例子
return a; return (a || b); return (a && (b || c)); return (a ? b : c);