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)
这不是合法的C ++代码。
该声明
a++ = b;
Run Code Online (Sandbox Code Playgroud)
是不合法的。直观地,您只能在赋值表达式的左侧放置某个对象(如果该对象表示一个对象而不是value)。例如,我们不能写
x + y = z;
Run Code Online (Sandbox Code Playgroud)
因为x + y是一个值,而不是一个对象。相同的原则在您的代码中起作用:表达式a++不能被写入,因为它的意思是“ a通过在其中添加一个,然后产生a以前拥有的值来进行更改”。
您对问题的评论谈论的是正式术语,这些术语用来描述我在这里所指的“值”和“可以写的东西”。这些被正式称为lvalues,rvalues,prvalues等,可能值得研究一下以了解更多有关哪种赋值语句是合法的。