根据宏定义,这是什么输出

时间:2015-09-21 12:47:19

标签: c macros

#define A 1+2
#define B 4+3

int main()
{
   int val = A*B;
   printf("%d",val);
}

这里定义A和B,val是(A * B)。什么是正确的输出?

2 个答案:

答案 0 :(得分:3)

让我们手动追踪扩展和计算。

A*B - > 1+2*4+3 - > 1+8+3 - > 12

因此,输出将为12

答案 1 :(得分:2)

这是Macros的常见问题。当您在宏中定义某些内容甚至为x + y时,建议先在()中对它们进行说明,以便"保护"操作。 因此,最好将A定义为(1+2)等。否则,您会得到人们上面所述的输出1+2*4+3=12