Порядок вычисления аргументов функции: неопределен в C. (Обратите внимание, что здесь нет неопределенного поведения; аргументы не могут быть оценены одновременно, например.)
Обычно оценка аргументов производится либо справа налево, либо слева направо.
Как правило, не вызывайте одну и ту же функцию дважды в списке параметров функции, если эта функция имеет побочные эффекты (как это имеет место в вашем случае), или если вы передаете один и тот же параметр дважды, что позволяет что-то в вызывающий сайт, который нужно изменить (например, передав указатель).