C语言基础有没有人可以解答一下

img


为什么一个是1000,一个是10啊,这个有什么区别吗,我不怎么会

结果: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*101000/(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;