为什么表达式'a ++ + = b'会出错?

shi*_*a99 -8 c++ compiler-errors syntax-error

#include <iostream.h>
int main()
{
  int a = 2;
  int b = 3;
  a++ += b;
  std::cout << a;
}
Run Code Online (Sandbox Code Playgroud)

我对此的理解是,这个表达式首先评估a + b,将该值存储在a中然后递增它.这里发生了什么?

YSC*_*YSC 8

这是一个错误1:

a++ += b
Run Code Online (Sandbox Code Playgroud)

因为a++返回临时(pr值)语言禁止修改,因为一旦评估完整表达式就将其丢弃.这是一种故障安全.


我对此的理解是,这个表达式首先评估a + b,将该值存储在a中然后递增它.

不,不.根据运算符优先级,先++评估+=.


1)这个答案假定a并且b是内置类型或行为良好的用户定义类类型.

  • 鉴于OP提供的信息很少,我认为假设`a`和`b`是`int`或类似的东西是公平的. (2认同)