#include "stdafx.h"
#include<stdio.h>
#define PR(x) printf("%d\t",(int)(x));
#define PRINT(a,b,c) PR(a) PR(b) PR(c)
#define MAX(a,b) (a<b?b:a)
int main()
{
int x=1,y=2;
//PR(MAX(x++,y));
PRINT(MAX(x++,y),x,y); //2,2,2
PRINT(MAX(x++,y),x,y); //2,3,2
return 0;
}
x
равно 1, поэтому 3 значения, передаваемые в PRINT, равны 2 2 2.
Тогда во втором PRINT значения, которые будут переданы, равны 2 3 2. Таким образом, вывод должен быть 2 2 2 2 3 2. Но эта программа выводит как 2 2 2 3 4 2.