C语言 麻烦各位大侠帮我解释个程序

来源:百度知道 编辑:UC知道 时间:2024/09/21 07:59:06
执行下面的程序后,a的值是( )。

#define SQR(X) X*X

main( )

{ int a=10,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);

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

}

看不怎么懂、麻烦高手帮忙解释下啦、

主要是 SQR(X) X*X 和这个 a/=SQR(k+m)/SQR(k+m);

麻烦谁知道的帮忙解释下啦 谢谢啦

宏定义中的SQR(X) X*X有如下作用:
在接下来的程序中,SQR(某表达式)被直接变为:某表达式*某表达式(注意没有括号)
所以
SQR(k+m)
就相当于
k+m*k+m

a/=SQR(k+m)/SQR(k+m)
就相当于
a=a/k+m*k+m/k+m*k+m

应该懂了吧~?

#define SQR(X) X*X是宏定义,声明程序中出现的所有SQR(X)用X*X来替换,即自定义了一个求x平方的带参数的宏

a/=SQR(k+m)/SQR(k+m);相当于a=a/SQR(k+m)/SQR(k+m);,用宏替换后得到:
a=a/(k+m*k+m)/(k+m*k+m)

SQR(X) X*X 是X的地方用X*X 代替
a/=SQR(k+m)/SQR(k+m)就是k+m/k+m主要是定义的时候X*X 没有用括号括起来的原因