老手进来一下

来源:百度知道 编辑:UC知道 时间:2024/05/06 14:48:32
为什么这个输出结果不为64而是10

#include <stdio.h>

#define f(x) x*x*x

main()

{ int a=3,s;

s=f(a+1);

printf("%d\n",s);

}

f(a+1)展开即 a+1*a+1*a+1=10
若要得到64,宏定义应为:
#define f(x) (x)*(x)*(x)

计算机很傻,define的时候他只会按照原样把括号中的x带入x*x*x中
则s=3+1*3+1*3+1;
如果想得64,得在#define f(x) (x)*(x)*(x)
这样就没问题了