下面的表达式是如何执行的?

How is the following expression be executed?

以下程序的输出是什么?

#include <iostream>
using namespace std;

int main()
{
    int a = 2, b = 4;
    a++ = b;
    cout << a << b;
    return 0;
}

这不是合法的 C++ 代码。

声明

a++ = b;

不合法。直觉上,如果它表示 object 而不是 value,则只能将其放在赋值表达式的 left-hand 侧。比如我们不能写

x + y = z;

因为x + y是一个值,不是一个对象。同样的原则在你的代码中起作用:表达式 a++ 不是可以写入的东西,因为它意味着 "change a by adding one to it, then produce the value that a used to have."

关于您问题的评论讨论了用于描述我在这里所指的 "values" 和 "something can be written to." 的正式术语,这些正式术语称为 lvaluesrvaluesprvalues 等,可能值得研究这些以了解更多关于赋值语句的种类合法。