#define A 1+2
#define B 4+3
int main()
{
int val = A*B;
printf("%d",val);
}
这里定义A和B,val是(A * B)。什么是正确的输出?
答案 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
。