#include <stdio.h>
#define mult(x,y)x*y /* what does this mean ?? */
int main()
{
int a,b,answer;
b=5;
a=5;
answer=mult(a+b,a+b);
printf("%d",answer);
return 0;
}
我使用编译器gcc-4.9.2
答案 0 :(得分:7)
如果我理解正确,你想知道#define mult(x,y) x*y
做了什么。
这是一个宏的定义,在编译器将在代码中的任何地方进行编译时,mult(x, y)
由x*y
替换。
在你的代码中:
answer=mult(a+b,a+b);
将替换为:answer=a+b*a+b;
答案是35
。
使用宏并确保它们正常工作的正确方法是在可能需要它们的地方加入括号。
因此,您的定义应为:#define mult(x, y) ((x)*(y))
,以确保结果符合您的预期100