3

Может кто-нибудь, пожалуйста, скажите, почему компилятор C выдает ошибку при использовании Compound Assignment и Prefix Dec/Inc вместе? [Но C++ не]C: Ошибка при использовании: «Соединение назначений» и «Префиксное сокращение» вместе

int myVar = 5; 
(--myVar) -= 4; 
// C : error C2106: '-=' : left operand must be l-value 
// C++: myVar=0; 

Я знаю, что ошибка говорит ...

Но я не могу понять, почему C компилятор не может распознать myVar как L-значение но C++ делает ?!

+1

myVar is lvalue, --myVal не является lvalue, просто, поскольку назначение – Creris

ответ

6

В C префикс -- оператор дает значение rvalue. Значение r не может быть левым операндом оператора присваивания. Тем не менее, C и C++ - это два разных языка.

+0

было бы более конкретным, так как существует множество способов назначения в целое число – Creris