这是怎么算出答案24 的?算来算去也得不出24 啊

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

#define M(x,y,z) xy+xz
main()
{int a=1,b=2,c=3;
printf("%d\n",M(a+b,++b+c,c+a));
}

define 不是函数,它会在编译阶段就直接做字符串替换
所以代码等价于
a+b*++b+c+a+b*c+a
注意,没有括号
-=-=-=
这里++b优先级最高,会在整个表达式计算之前先执行,所以b=3
1+3*3+3+1+3*3+1=24

define 是直接替换
所以结果是这样

#define M(x,y,z) xy+xz
main()
{int a=1,b=2,c=3;
printf("%d\n", a+b++b+c+a+bc+a);
}

我觉得应该是少了乘号

#define M(x,y,z) xy+xz
main()
{int a=1,b=2,c=3;
printf("%d\n", a + b *++b + c+a + b * c + a); //而不是    (a+b)*(++b+c)+(a+b)*(c+a));
}