刚遇到的一个宏定义的小疑点,各位帮忙看看

刚遇到的一个宏定义的小问题,各位帮忙看看!
C/C++ code

#define X 5
#define Y X+1
#define Z Y*X/2
void main()
{
    int a = Y*X/2;
    cout<<X<<"\t"<<Y<<"\t"<<Z<<"\t"<<a<<endl;
}



这里面输出结果各位觉得是多少?为什么

------解决方案--------------------
a ==
5+1*5/2
== 5+5/2
== 5+2
== 7