Здравствуйте, Аноним, Вы писали:
А>Из стандарта, я понял, что вызов функции является sequence point.
Двумя.
А>Если это так, объясните мне, как работает следующий фрагмент кода:
Следующий фрагмент кода не работает.
А>#include <iostream>
А>int f(int i) { return i;}
А>void main()
А>{
А> int i = 0;
А> std::cout << f(i) << " " << f(i++) << " " << f(++i) << " " << f(i++) << std::endl;
А>}
А>Или здесь UB?
Да.
А>Почему?
Потому, что переменная i модифицируется более одного раза между двумя соседними точками следования.