【问题标题】:C++ returning an assignment?C++ 返回一个赋值?
【发布时间】:2021-03-21 03:39:49
【问题描述】:

在 C++ 中,函数返回赋值是什么意思?例如

int a = ...;
int b = ...;
int some_function(p)
{
    return a = b;
}

【问题讨论】:

  • 这意味着编写这行代码的人试图变得聪明,这样做会使下一个必须阅读它的可怜人绊倒。
  • a=b 是赋值b 后值为a 的表达式。该表达式的值就是返回的值。当你看到它时很高兴认识到这一点,因此它对教学很有用,但永远不要编写这样的代码。

标签: c++ function return variable-assignment


【解决方案1】:

在这种情况下,它执行分配,然后返回b

这种东西可能会被编译器标记为无意的错误,通常你的意思是a == b,所以你可能需要处理它。将它作为一个单独的行来表明它是故意的。

【讨论】:

  • 它返回与 b 相同的值,但在语义层面上,它在将 b 的值赋给 a 之后返回 a。这对于澄清是否有类似这样的行非常重要:return a=b+c;
  • @TUIlover 是的,它返回评估后的 rvalue 表达式。在这个微不足道的情况下,这只是b。在return a = b = c[d] = *e = f(g++) 这样的情况下,事情变得有趣了。
猜你喜欢
  • 1970-01-01
  • 2013-08-29
  • 2012-06-16
  • 2012-09-08
  • 2018-12-06
  • 2013-04-08
  • 2014-10-12
  • 2010-09-26
相关资源
最近更新 更多