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

Xol*_*lve 4 c c++ increment decrement

可能重复:
为什么++ i被认为是l值,但i ++不是?

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

++x--
++(x--)
Run Code Online (Sandbox Code Playgroud)

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

然而(++x)--编译.我很迷惑.

Mar*_*ers 10

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

当你调用++i的值i增加后再i返回.在C++中,返回值是变量,是一个左值.

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

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

  • 对于`不要这样做,即使它编译也是+1.:-) (4认同)