Еще раз, наши самые любимые проблемы «i = i--». В C99 мы имеем:Существует ли конкретная документация для поведения «i = i--» в gcc?
6.5 Выражения # 2: Между предыдущей и следующей точкой последовательности объект должен быть его сохраненное значение модифицирована более одного раза
70) Этот пункт оказывает !! не определено !! Заявление выражения , такие как
i = ++i + 1;
Но для undefinded поведения могут быть варианты от случайного выхода на «выполнение программы в документированной форме» (c99 3.4.3)
Итак, вопрос:
Содержит ли gcc поведение для i = i ++, i = i-- и т. Д. Утверждений?
Фактический код
int main(){int i=2;i=i--;return i;}
Нет, gcc не документирует, что он делает в этом случае. Разработчики Gcc ищут, помимо прочего, скорость сгенерированного кода. Документирование того, что делает этот пример, противоречит этой цели. Создание программистов, которые пишут код, подобный этому примеру, счастлив, не имеет веса по сравнению с улучшением результатов тестов. –