结果:i1 = 1000, i2 = 10
此题主要是熟悉c语言的宏定义,宏定义方法是原样展开
#include <stdio.h>
#define N 10
#define s(x) x*x
#define f(x) (x*x)
int main()
{
int i1,i2;
// 1000 / s(N) = 1000 / x * x = 1000 / 10 * 10 = 1000
i1 = 1000 / s(N);
// 1000 / f(N) = 1000 / (x * x) = 1000 / (10 * 10) = 10
i2 = 1000 / f(N);
// i1 = 1000, i2 = 10
printf("%d %d\n",i1,i2);
return 0;
}
define是替换,你直接替换下就知道了
1000/10*10 跟 1000/(10*10)的区别,这个总知道为啥了吧?小学数学都学过,第一个先除10然后乘10,第二个是除以100
i1= 1000 / s(N); 相当于 :i1=1000/N x N = (1000/10) x 10 =100 x 10 =1000;
i2=1000/f(N); 相当于: i2 =1000/(N x N) = 1000/(10 x 10) = 1000/100 = 10;