【发布时间】:2021-07-03 19:38:32
【问题描述】:
如果我在 C++ 中使用嵌套递增运算符,例如
int a = 1;
int b = (a++)++;
它给出了一个编译时错误:
error: lvalue required as increment operand
但是,如果我写
int a = 1;
int b = ++(++a);
b 的新值变为 3。
这是什么原因?
【问题讨论】:
-
原因是价值类别。后增量只能在左值上,但返回右值。另外,请通过编辑问题向问题添加信息,而不是通过发布 cmets。
-
但是……为什么还要麻烦……尝试编写像这个问题一样的代码有什么用处 - 你永远不会在生产代码中写这个……你会吗?