Связанный вопрос: Любая хорошая причина, почему оператор присваивания не является точкой последовательности?
Из comp.lang.c FAQ Я бы сделал вывод о том, что нижеприведенная программа undefined. Как ни странно, он только упоминает вызов f
как точку последовательности, между вычислением аргументов и передачей управления на f
. Передача управления из f
обратно вызывающему выражению не указана в качестве точки последовательности.
int f(void) { i++; return 42; }
i = f();
Действительно ли это undefined?
В качестве примечания, которое я добавляю ко многим из моих вопросов, меня интересует это в контексте статического анализа. Я сам не пишу это, я просто хочу знать, следует ли мне предупреждать об этом в программах, написанных другими.