宏的简单替换(入门)

刚接触宏,请问这个的输出结果为什么是82,对过程完全不理解,望各位指点

#include
#define A b+c
#define Z y+x 
int main(void){
    int y = 2,x = 6,b = 0x10,c = 0x20;
    printf("%x",Z*A);
    return 0;
}
printf("%x",Z*A) 在编译时宏替换为
printf("%x",y+x*b+c),0x2+0x6  *  0x10+0x20 = 0x82


楼上是正解。这里多说一句,带运算符的宏定义用小括号括起来;多个语句的宏定义用大括号括起来。