C++ ()运算符的返回值
我的方法的最后一行应该是C++ ()运算符的返回值,c++,C++,我的方法的最后一行应该是 return methodName(xxx,xxx); 但我把它当作 return (xxx,xxx); 方法返回类型是bool,我只是在调试问题时才注意到输入错误。我没想到会返回(xxx,xxx)编译。它到底做了什么 ()运算符的返回值 这不是()运算符的调用。()运算符的语法要求调用的函数或变量的标识符。在没有标识符的情况下,表达式周围的括号用于分组子表达式,并且可能会更改操作的执行顺序。例如:1-(2-3)将后两个操作数分组,结果不同于1-2-3。下面是一个括
return methodName(xxx,xxx);
但我把它当作
return (xxx,xxx);
方法返回类型是bool,我只是在调试问题时才注意到输入错误。我没想到会返回(xxx,xxx)代码>编译。它到底做了什么
()运算符的返回值
这不是()运算符的调用。()运算符的语法要求调用的函数或变量的标识符。在没有标识符的情况下,表达式周围的括号用于分组子表达式,并且可能会更改操作的执行顺序。例如:1-(2-3)
将后两个操作数分组,结果不同于1-2-3
。下面是一个括号调用函数的示例:1-cos(2-3)
在您的例子中,没有同级表达式,因此括号不会更改任何内容的顺序,并且表达式与
return xxx,xxx;
这是对逗号运算符的调用,类似于:
xxx;
return xxx;
只要xxx
可以隐式转换为函数的返回类型,这是格式良好的
()运算符的返回值
这不是()运算符的调用。()运算符的语法要求调用的函数或变量的标识符。在没有标识符的情况下,表达式周围的括号用于分组子表达式,并且可能会更改操作的执行顺序。例如:1-(2-3)
将后两个操作数分组,结果不同于1-2-3
。下面是一个括号调用函数的示例:1-cos(2-3)
在您的例子中,没有同级表达式,因此括号不会更改任何内容的顺序,并且表达式与
return xxx,xxx;
这是对逗号运算符的调用,类似于:
xxx;
return xxx;
只要xxx
可以隐式转换为函数的返回类型,这是格式良好的。逗号,
运算符将返回所提供列表中的最后一个元素
返回(a,b,c)
等于返回c
,即其返回的最后一个元素c逗号,
操作符将返回所提供列表中的最后一个元素
返回(a,b,c)
等于返回c
,即其返回的最后一个元素c方法返回类型为bool
是这里的重点
< C++的主要目的是评估表达式和
return (expression1,expression2);
您有两个表达式,即expression1
和expression2
,它们是一个接一个地求值的(逗号-它只是一个分隔符-执行此位)
由于expression2
排在最后,因此将返回它的求值结果。如果expression2
返回非零值,则返回值将为true
,如果不是false
旁注:虽然
,
可以重载,但从问题中可以清楚地看出,您使用它只是作为分隔符方法返回类型为bool
,这一点很重要
< C++的主要目的是评估表达式和
return (expression1,expression2);
您有两个表达式,即expression1
和expression2
,它们是一个接一个地求值的(逗号-它只是一个分隔符-执行此位)
由于expression2
排在最后,因此将返回它的求值结果。如果expression2
返回非零值,则返回值将为true
,如果不是false
Sidenote:虽然,
可以重载,但从问题中可以清楚地看出,您使用它只是作为分隔符不确定如何输入正确的术语,但在您的示例中,没有操作符()
,它只是普通的方括号comma操作符。C语言的一个怪癖,基本上是无用的。我不知道如何使用正确的术语,但在您的示例中,没有操作符()
,它只是普通的方括号comma操作符。C的一个怪癖,而且基本上是无用的。imho“表达式周围的括号用于分组子表达式”并不能准确地解决OP的混淆,因为函数调用操作符也可以只是表达式周围的括号,如methodName(xx,xx)代码>@tobi303我对为什么这不是对操作符()thx的调用进行了一些扩展,顺便说一句,这不仅仅是为了抱怨而抱怨,我不知道如何恰当地表达它,而你的解释现在听起来很合理。@tobi303这并不是为了抱怨而抱怨。我觉得这是合理的建设性批评,我对此表示赞赏。事实上,当您发表评论时,我已经想到了同样的事情,并且已经在编写我的编辑。imho“表达式周围的括号用于分组子表达式”并不能完全解决OP的困惑,因为函数调用操作符也可以只是表达式周围的括号,如methodName(xx,xx)代码>@tobi303我对为什么这不是对操作符()thx的调用进行了一些扩展,顺便说一句,这不仅仅是为了抱怨而抱怨,我不知道如何恰当地表达它,而你的解释现在听起来很合理。@tobi303这并不是为了抱怨而抱怨。我觉得这是合理的建设性批评,我对此表示赞赏。事实上,当你发表评论时,我已经想到了同样的事情,并且已经在写我的编辑了。如果表达式a和b有副作用,这并不等于返回c
。当然了,b&c可以是语句,但这里我的意图仅在于方法的返回值。如果表达式a和b有副作用,它不等于返回c。当然,a,b&c可以是语句