2013-12-20 2 views
-1

Для моей первой программы я пытаюсь сделать калькулятор, но я получаю сообщение об ошибке:Ошибка: именующий требуется в качестве левого операнда назначения

Ошибки: именующем выражении, необходимом в качестве левого операнда назначения

Вот код:

http://pastebin.com/mxdnPGeT

ошибка, где я говорю, х + у = сумма;

+1

Reverse операнды, используйте 'сумму = х + 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; 
Смежные вопросы