c语言SQR(X)

以下程序的输出结果是: 2为什么#define SQR(X) X*Xmain(){ int a=16,k=2,m=1;a/=SQR(k+m)/SQR()k+m;printf("d\n",a);}这个过程是怎么出来的?#define SQR(X) X*X是什么意思?a/=SQR(k+m);是什么意思?

#define 就是定义宏。
简单理解#define SQR(X) X*X ,就是告诉编译器在代码中只要遇到SQR(X)的格式就用X*X替换。比如SQR(k+m)就相当于 (k+m)*(k+m)。
定义宏的好处是,方便后期修改,多处引用,只要修改开头定义就行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-03
  #defineSQR(X)X*X,是定义一个宏,C语言中宏相当于一个替换功能,将X*X这个平方算式替换成一个函数SQR就是说SQR(X)就等于X*X。

  而你写在SQR括号里面的内容就会替代X然后作平方运算。相当于X是一个变量,不过这个变量只存在于编译前,编译时会用一个真实的值替换掉。

  假如SQR(k+m)。就是将X换成k+m,那SQR(X)=X*X=SQR(k+m)=(k+m)*(k+m)。

  a/=SQR(k+m);等同于a=a/SQR(k+m);

  总而言之,#define宏定义就相当于一个替换功能,能使程序更加简单,易读。

  在编译阶段,编译器会替换程序中的宏为真实内容,(把SQR换成X*X),也就是宏只存在于编译前
第2个回答  推荐于2016-02-12
定义了一个宏,编译时替换x为x*x;
所以a/=s(k+m) == a/= k+m*k+m == a = a / ( k+m*k+m) == a = 16/2+1*2+1)=16/5 = 3追问

答案是2 后面的程序是a/=SQR(k+m)/SQR(k+m)

追答

所以a/=s(k+m)/s(k+m)
a/= k+m*k+m/ k+m*k+m
a/=1+2*1+2/1+2*1+2
a/=1+2+1+2+2=8
a= a/8 = 2

本回答被提问者采纳
第3个回答  推荐于2018-02-28
sqrt()是求平方根函数.sqr,c语言库中好像是没有这样的函数
在C语言中,可以使用库函数sqrt来实现开根号计算。
1 头文件:math.h
2 声明:
double sqrt(double n);
3 功能:
将参数n开平方后,得到算数平方根返回。
4 调用形式:
sqrt(100);
为计算100的平方根。本回答被网友采纳
第4个回答  2018-03-13
a是整形
a/=2+1*2+1/2+1*2+1
a/=2+2+0+2+1
a=16/7
a=2
相似回答