Макросы и постинкремент

Вот еще несколько странных макросов, на которые я надеялся пролить свет:

#define MAX(a,b) (a>b?a:b)

void main(void)
{
  int a = 3, b=4;

  printf("%d %d %d\n",a,b,MAX(a++,b++));
}

Выходное значение равно 4 6 5. Значение b увеличивается дважды, но не раньше, чем MAX отобразит его значение. Кто-нибудь может сказать мне, почему это происходит, и как можно предсказать такое поведение? (Еще один пример того, почему следует избегать макросов!)

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

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