以下表达式将如何执行?

时间:2019-06-26 18:25:58

标签: c++ post-increment

以下程序的输出是什么?

#include <iostream>
using namespace std;

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

1 个答案:

答案 0 :(得分:4)

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

声明

a++ = b;

不合法。直观地,您只能在赋值表达式的左侧放置一个表示 object 而不是 value 的内容。例如,我们不能写

x + y = z;

因为x + y是一个值,而不是对象。代码中有同样的原则:表达式a++不能被写入,因为它的意思是“通过在其中添加一个a来产生{{1 }}曾经拥有。”

对您的问题的评论涉及形式化术语,这些术语用来描述我在这里指的“值”和“可以写的东西”。这些被正式称为 lvalues rvalues prvalues 等,可能值得研究这些知识以进一步了解哪种赋值方式声明是合法的。