【问题标题】:Post increment operator ++后自增运算符 ++
【发布时间】:2011-11-15 21:34:42
【问题描述】:
cout<<(x++)++; //fails 
cout<<++(++x); //passes

为什么后增量失败?我看到它发生了,但不确定技术原因。

【问题讨论】:

  • 后增量临时?
  • x 的类型是什么?这很重要。如果是内置的,operator++ 不是函数调用。

标签: c++


【解决方案1】:

x++ 返回一个右值,因此您不能再次对其执行++。另一方面,++x 返回一个左值,因此您可以对其执行++

【讨论】:

【解决方案2】:

这就是增量运算符在 C/C++ 中的工作方式。

如果将++ 放在变量之后(后缀增量),则整个表达式的计算结果为变量之前递增的值。

如果您将++ 放在变量之前(前缀增量),则表达式的计算结果为增量操作后的值。

虽然前缀操作返回对传递变量的引用,但后缀版本返回一个临时值,该值不得递增。

【讨论】:

    【解决方案3】:

    没错。你不能对右值执行 ++。 here 给出了关于右值如何工作的一个很好的解释。

    【讨论】:

      猜你喜欢
      • 2011-02-14
      • 2019-12-23
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2020-07-14
      • 2011-01-23
      相关资源
      最近更新 更多