Непреднамеренная множественная оценка параметра в макросе

Почему вывод второго printf равен: максимум 50, а 67 - 62? Почему не максимум 50, а 62 - 57?

#define MAX(a,b) ((a)>(b) ? (a): (b))
int incr(){
    static int i =42;
    i += 5;
    return i;
}
int _tmain(int argc, _TCHAR* argv[])
{   
    int x = 50;
    printf("max of %d and %d is %d\n",x, incr(), MAX(x, incr()));
    printf("max of %d and %d is %d",x, incr(), MAX(x, incr()));
    return 0;
}

Ответы на вопрос(1)

Ваш ответ на вопрос