永发信息网

c语言宏定义计算, #define f(x) x*x main() ( int i i=f

答案:4  悬赏:20  手机版
解决时间 2021-03-04 00:19
c语言宏定义计算,
#define f(x) x*x

main()
(
int i
i=f(4+4)/f(2+2)
)
结果i怎么是3
最佳答案
应该改为:#define f(x) ((x)*(x)) i = ((6+6)*(6+6))/((2+2)*(2+2)) = 9 x要括起来, 整个运算还要括起来,这样除法才不会出错。少一个括号都不行! 如少一个#define f(x) (x)*(x),则 i = (6+6)*(6+6)/(2+2)*(2+2)=144, 还是错!
全部回答
这里要注意,宏替换与函数参数传递有区别。 i =( 4+4*4+4)/(2+2*2+2)=24/8=3
i=f(4+4)/f(2+2)=4+4*4+4/2+2*2+2=28 如果#define f(x) (x*x) i=f(4+4)/f(2+2)=(4+4)*(4+4)/(2+2)*(2+2)=64 #define f(x) x*x i=(f(4+4))/(f(2+2)); 这样i=f(4+4)/f(2+2)=(4+4*4+4)/(2+2*2+2)=24/8=3 你想到达到你的效果要这样写 #define f(x) ((x)*(x)) i=(f(4+4))/(f(2+2)); 这样i= ((4+4)*(4+4))/((2+2)*(2+2))=4 多加点括号就好
这代码都是错的, 怎么可能会输出i是3. 宏函数和函数最根本的区别就是, 宏函数真的是你传的啥, 它就变成啥, 就按你传的数据来说: f(x) 第一个f的x就是4 + 4, 那么在宏函数里x就会被替换, 注意是替换, 成4+4, 即: f(4 + 4) 等同于 4+4 * 4+4 而f(2+2)是同理, 它等同于2+2*2+2 宏它是一种纯文本的改变, 可以说预处理器它就是一个自动的文本编辑器, 把一些特定的单词, 换成另一些字符.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
高港区妇女儿童活动中心在哪里啊,我有事要去
什么胶水最好
已知全集U={(x,y)|x∈R,y∈R},A={(x,y)|(y-3)
网页推广应该如何做?
上海万达影城金桥店在哪里啊,我有事要去这个
好几年没见面的朋友要结婚了,包多少红包合适
没有营业执照在家蒸馒头出去摆摊卖可以吗
握手言()天喜()利人()风细()过天()
【如果昨天是明天就好了】如果昨天是明天就好
老款速腾空调,刚着车凉,开一会以后空调不凉
女警察一定干户籍吗多少钱一个月
临夏市环球顺腾汽车销售服务有限公司地址在什
2017款宝马320加多少号油
淘宝上的升级内存可靠吗
有四个数,甲数是20,比乙数少10,乙数是丙数
推荐资讯
湘西乾州哪里有玩的
下列哪种情况属于违规
千珏怎么玩
上海七浦路哪有卖中年女性服饰
【财产税】财产税是()。
读我国某区域示意图,回答下列各题。【小题1
nba2k游戏中库里数据还会提升吗
咸阳彩虹中学考试题难不?
经济资本底线回报率参考我行资本的融资成本和
在科学上没有平坦的大道,只有不畏劳苦沿着陡
装系统时,从光盘复制完信息后,不能从硬盘启动
三轮车 时速 15公里 跑多远
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?