永发信息网

#define f(x) x*x # x*(x) #

答案:2  悬赏:60  手机版
解决时间 2021-03-07 11:12
#define f(x) x*x
# x*(x)
# (x)*(x)

在这三种情况下,f(1+2)分别是怎么计算的,详细点
最佳答案
#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;
全部回答
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 这个才是我们想要的结果!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请求帮忙 我今年考得吉林大学翻译硕士口译330
外公的岳父叫什么?
《三国演义》王允巧使美人计的时间是多少?请
欣艺窗饰怎么去啊,有知道地址的么
涡轮增压适合什么用
父母为什么那么自私
下图是闰绍细胞(一种抑制性中间神经元)参与调
石源路地址有知道的么?有点事想过去
蚕豆叶发黑点是什么原因?
【梯级】田纳西河梯级开发会产生哪些经济效益
余额宝第三步身份验证要多长时间
用云南话说 你在哪里我找你来玩可以不
平坦地我想知道这个在什么地方
女的来事时能烧纸钱给死去亲人吗?
胃嗝气吃什么食物好
推荐资讯
参与构成感受器的是A运动神经末梢,B感觉神经
塔罗牌中五芒星3正位什么意思
宝骏730产自哪里
请求贸易公司简介范文
【加权平均净资产收益率】加权平均净资产收益
伊川县首富是谁
淘宝的优惠券哪里找
2017年暑假音基考试什么时候可以查询成绩
如何评价陈小春与应采儿的感情
推荐几个类似于 耐克 阿迪 supreme的这种牌子
商品房需要交哪些费用
有歌词时光倒转山盟海誓,,,是什么歌
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?