Очки последовательности в printf
Я читаюВот что есть точка последовательности:
После действия, связанного со спецификатором формата преобразования ввода / вывода. Например, в выраженииprintf("foo %n %d", &a, 42)
есть точка последовательности после%n
оценивается перед печатью42
.
Тем не менее, когда я бегуэтот код:
int your_function(int a, int b) {
return a - b;
}
int main(void) {
int i = 10;
printf("%d - %d - %d\n", i, your_function(++i, ++i), i);
}
Вместо того, что я ожидаю, я получаю:
12 - 0 - 12
Это означает, что там былоне точка последовательности, созданная для спецификатора формата преобразования. Являетсяhttp://en.wikipedia.org неправильно, или я просто что-то неправильно понял, или gcc не совместим в этом случае (случайно Visual Studio 2015 дает тот же неожиданный результат)?
РЕДАКТИРОВАТЬ:
Я понимаю, что порядок аргументовyour_function
оцениваются и присваиваются параметры не определены. Я не спрашиваю, почему мой средний термин равен 0. Я спрашиваю, почему два других термина - 12.