以下程序的输出是什么?
#include <iostream>
using namespace std;
int main()
{
int a = 2, b = 4;
a++ = b;
cout << a << b;
return 0;
}
答案 0 :(得分:4)
这不是合法的C ++代码。
声明
a++ = b;
不合法。直观地,您只能在赋值表达式的左侧放置一个表示 object 而不是 value 的内容。例如,我们不能写
x + y = z;
因为x + y
是一个值,而不是对象。代码中有同样的原则:表达式a++
不能被写入,因为它的意思是“通过在其中添加一个a
来产生{{1 }}曾经拥有。”
对您的问题的评论涉及形式化术语,这些术语用来描述我在这里指的“值”和“可以写的东西”。这些被正式称为 lvalues , rvalues , prvalues 等,可能值得研究这些知识以进一步了解哪种赋值方式声明是合法的。