以下表达式如何执行?

Yat*_*rth -5 c++ post-increment

以下程序的输出是什么?

#include <iostream>
using namespace std;

int main()
{
    int a = 2, b = 4;
    a++ = b;
    cout << a << b;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

tem*_*def 5

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

该声明

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

是不合法的。直观地,您只能在赋值表达式的左侧放置某个对象(如果该对象表示一个对象而不是value)。例如,我们不能写

x + y = z;
Run Code Online (Sandbox Code Playgroud)

因为x + y是一个值,而不是一个对象。相同的原则在您的代码中起作用:表达式a++不能被写入,因为它的意思是“ a通过在其中添加一个,然后产生a以前拥有的值来进行更改”。

您对问题的评论谈论的是正式术语,这些术语用来描述我在这里所指的“值”和“可以写的东西”。这些被正式称为lvaluesrvaluesprvalues等,可能值得研究一下以了解更多有关哪种赋值语句是合法的。