C++宏定义注意点

这么一段代码

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

第一次做的时候自然而然地想成

(1+2)*(2+3)+(1+3)=19

然而宏定义中并没有(),所以应该是

1+2*2+3+1+3=12

发表评论

电子邮件地址不会被公开。 必填项已用*标注