下面的表达式是如何执行的?
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." 的正式术语,这些正式术语称为 lvalues、rvalues、prvalues 等,可能值得研究这些以了解更多关于赋值语句的种类合法。
以下程序的输出是什么?
#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." 的正式术语,这些正式术语称为 lvalues、rvalues、prvalues 等,可能值得研究这些以了解更多关于赋值语句的种类合法。