#define f(x) x*x
# x*(x)
# (x)*(x)
在这三种情况下,f(1+2)分别是怎么计算的,详细点
#define f(x) x*x # x*(x) #
答案:2 悬赏:60 手机版
解决时间 2021-03-07 11:12
- 提问者网友:战魂
- 2021-03-06 21:24
最佳答案
- 五星知识达人网友:痴妹与他
- 2021-03-06 22:02
#define f(x) x*x //宏定义 f(x)=x*x
main( )
{ int i;
i=f(4+4)/f(2+2);
printf(“%d\n”,i);
}
i=f(4+4)/f(2+2);按定义的宏定义展开,但是此宏定义展开时不能自行加括号!
所以 i=4+4*4+4/2+2*2+2;
如果还不能理解 就看下面
按数学方法展开 i=(4+4)*(4+4)/(2+2)*(2+2);
按程序展开
此宏定义展开时不能自行加括号
所以把 i=(4+4)*(4+4)/(2+2)*(2+2);
中括号去掉
即为 i=4+4*4+4/2+2*2+2;
main( )
{ int i;
i=f(4+4)/f(2+2);
printf(“%d\n”,i);
}
i=f(4+4)/f(2+2);按定义的宏定义展开,但是此宏定义展开时不能自行加括号!
所以 i=4+4*4+4/2+2*2+2;
如果还不能理解 就看下面
按数学方法展开 i=(4+4)*(4+4)/(2+2)*(2+2);
按程序展开
此宏定义展开时不能自行加括号
所以把 i=(4+4)*(4+4)/(2+2)*(2+2);
中括号去掉
即为 i=4+4*4+4/2+2*2+2;
全部回答
- 1楼网友:未来江山和你
- 2021-03-06 23:25
define是c语言中的宏定义关键字,其定义格式如下:
#define [macroname] [macrovalue]
宏定义分为普通宏定义和带参数的宏定义
//普通宏
#define pi (3.1415926)
//带参数的宏 (宏函数)
#define max(a,b) ((a)>(b)? (a),(b))
注意变量在宏中要用括号括起来,因为,在c语言中define宏定义在编译时,会被展开,进行“傻瓜式”替换,也称为“字面”替换,如果没有括号有可能会产生歧义。
如:
int a,b,c,d,e;
a=1;b=2;c=6,d=4;
e=f(a+b) * f(c+d) ; //理论值e=9*100=900
#define f(x)(x*x)
替换结果为:e=(a+b*a+b)*(c+d*c+d) = 5*34=170
#define f(x) x*x
替换结果为:e=a+b*a+b*c+d*c+d=1+2+12+24+4=43
#define f(x) ( (x)*(x) )
替换结果为:e=( (a+b)*(a+b)*(c+d)*(c+d) )=3*3*10*10=900
这个才是我们想要的结果!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯