在同一变量上混合后置和递增/递减运算符

时间:2010-07-19 13:53:28

标签: c++ c increment decrement

  

可能重复:
  Why is ++i considered an l-value, but i++ is not?

在C ++中(以及在C中),如果我写:

++x--
++(x--)

我得到错误:左值作为递增操作数

然而(++x)--编译。我很困惑。

1 个答案:

答案 0 :(得分:10)

后增量和前增量运算符仅适用于左值。

当您致电++i时,i的值会增加,然后会返回i。在C ++中,返回值是变量,是一个左值。

当您致电i++(或i--)时,返回值是i之前递增的值。这是旧值的副本,与变量i不对应,因此不能用作左值。

无论如何,即使它编译也不要这样做。