返回 (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);
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何获取std::result_of函数的返回类型
- QueryWorkingSet总是返回false
- (C++)分析树以计算返回错误值的简单算术表达式
- 访问者访问变体并返回不同类型时出错
- 如何返回一个类的两个对象相加的结果
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- lower_bound()返回最后一个元素
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何取消对nullptr的屏蔽,返回正确的对象
- 奇怪的结构&GCC&clang(void*返回类型)
- 架构决策:返回std::future还是提供回调
- 从python中调用C++函数并获取返回值
- 矩阵向量乘法(cublasDgemv)返回零
- 为什么模板类中的对象不能返回值