2013-12-20 77 views
-1

的左操作数对于我的第一个程序,我试图做一个计算器,但我得到一个错误:错误:左值要求作为分配

错误:因分配

的左操作数左值

下面是代码:

http://pastebin.com/mxdnPGeT

误差是我说X + Y =总和;

+1

逆向操作数,使用'总和= X + y'。 –

+3

通常,您应该在问题中包含代码,而不是链接到pastebin,以确保将来的读者能够阅读它。如果代码太长,请尝试将其缩小为显示问题的较小示例;请参阅http://sscce.org/以获取相关信息。 (在这个特殊情况下,'x + y = sum;'恰好足以查明问题所在。) –

回答

4

赋值运算符=的作用是将操作符右侧的任何内容指定给左侧的对象。因此,您试图将未初始化的sum的值分配给您无法分配的x + y产生的值。看起来你真的想这样做:

sum = x + y; 

它不是在数学等,其中的=运营商只是意味着两个操作数是相等的。在C++(和许多编程语言)中,=被赋值。它从右侧分配到左侧。有些语言为操作员使用不同的字符以避免这种混淆(如:=<-)。

+0

在C中,'x + y'不会创建一个临时对象;它只是产生一个价值。我不认为它会在C++中创建一个临时对象。 –

+0

@KeithThompson好点。 –

1

您有以下:

x + y = sum; 

你需要的是:

sum = x + y; 
1
x + y = sum; 

这是无效的,x+y不是左值:你不能分配给x+y因为它没有storage address

应该反转在赋值表达式的操作数的顺序:

sum = x + y; 
相关问题