Различное поведение оператора ++ в объективе C? - PullRequest
0 голосов
/ 10 ноября 2011

Я скомпилировал программу с целью C.

int a = 3;

a = (a++) * (a++);

NSLog(@"a= %d",a);

Вернуть вывод: a = 11

Тогда как в c # вывод равен 12.

Может кто-нибудь объяснитьмне разница в поведении оператора ++ в объективе C?

1 Ответ

6 голосов
/ 10 ноября 2011

Нет никакой разницы в операторе ++.Проблема в том, что вы вызываете неопределенное поведение.В частности, вы читаете и обновляете переменную a дважды в одной и той же точке последовательности, которая явно не определена в спецификации ANSI C.Значение, которое вы получаете из этого выражения, может отличаться от компилятора к компилятору, оно может даже отличаться между версиями одного и того же компилятора или даже между вызовами одной и той же версии компилятора с включенными отдельными оптимизациями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...