- это i = f (); определяется, когда f изменяет i?

Связанный вопрос: Есть ли веская причина, по которой оператор присваивания не является точкой последовательности?

Из comp.lang.c FAQ I означало бы, что указанная ниже программа не определена. Как ни странно, он упоминает только вызов f как точку последовательности между вычислением аргументов и передачей управления f . Передача управления от f обратно вызывающему выражению не указана в качестве точки последовательности.

int f(void) { i++; return 42; }
i = f();

Действительно ли она не определена?

В качестве заключительного примечания, которое я добавляю ко многим своим вопросам, Меня это интересует в контексте статического анализа. Я не пишу это сам, я просто хочу знать, следует ли мне предупреждать об этом в программах, написанных другими.

21
задан Community 23 May 2017 в 10:30
поделиться