Мне очень глупо задавать этот вопрос. но не могу понять причину самостоятельно.Как это оценивается?
int main()
{
int target;
int buffer =10;
const int source = 15;
target = (buffer+=source) = 20;
cout << target+buffer;
return 0;
}
target = (buffer+=source) = 20;
станет target = (25) = 20
.
Но если я даю такую же инструкцию в исходном файле, она дает ошибку l-value.
Как значение target+buffer
печатает 40.
Прохождение через отладчик поможет вам здесь. – benjymous
Вы не [пытаетесь скомпилировать это с помощью компилятора C] (http://stackoverflow.com/a/10654019/335858), не так ли? – dasblinkenlight
Я уверен, что это будет неопределенное поведение из-за последовательности. – Bathsheba