В чем разница междуLvalue требуется в качестве левого операнда назначения в С программой
c=a%2;
и
a%2=c
;
Я получаю эту ошибку для второго:
именующего выражения, необходимого в качестве левого операнда присваивания
В чем разница междуLvalue требуется в качестве левого операнда назначения в С программой
c=a%2;
и
a%2=c
;
Я получаю эту ошибку для второго:
именующего выражения, необходимого в качестве левого операнда присваивания
Назначения в C и C++ всегда форм
assigned = to_assign;
Языки не пытаются дублировать то, что вы могли бы сделать математиком, работающим с нагрузкой алгебры.
Допускается c = a % 2
, но a % 2 = c
нет. Последний попытается присвоить c
a % 2
.
Очень неофициально, вы не можете иметь a % 2
с левой стороны задания, так как вы не можете взять его адрес. Говоря довольно неформально, вы можете думать о назначении как lvalue = rvalue
, где lvalue
означает «левое значение», а rvalue
означает «правильное значение». Это объясняет сообщение об ошибке, сообщаемое вашим компилятором.
. спасибо за помощь –
Предложение: 'всегда в форме ... для _base_types_'. Хотя это соглашение, которое предпочтительнее сохранять, оно может быть отменено, например, DSL. Без них у нас не было бы 'boost :: spirit <>'. – lorro
@lorro: У меня есть серьезные сомнения в том, что это происходит в C! – Olaf
Что вы ожидаете от результата второго? – JVApen
, он присваивает значение остатка (когда id делится на 2) на c. еще ученик –
Левая вещь - это назначенная, а не правильная. – JVApen