2013-12-20 70 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; 
相關問題