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