标题:[求助]宏函数
只看楼主
andy_lau
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-7
 问题点数:0 回复次数:15 
[求助]宏函数

有个程序不懂,如下:
#define S(x)4*x*x+1
main()
{ int i=6,i=8;
printf("%d\n",S(i+j))
}
答案是81。解释:S(i+j)被替换为4*i+j*i+j+1.不懂的是:为什么是这样替换的?替换的过程这样理解??

搜索更多相关主题的帖子: 函数 
2007-08-07 21:20
anlogo
Rank: 2
等 级:论坛游民
威 望:1
帖 子:293
专家分:20
注 册:2007-7-20
得分:0 
这里把i+j作为x 4*(i+j)*(i+j) +1

哈哈有一点威望了~~
2007-08-07 21:27
andy_lau
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-7
得分:0 
有人知道不??我在电脑边等着了。。。。。实在不懂~~
2007-08-07 21:28
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:0 
看书,书上写的很清楚,就是直接替换。
2007-08-07 21:47
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
得分:0 
回复:(andy_lau)[求助]宏函数

如果你这样定义S(x)就不会出错了:

#define S(x) 4*(x)*(x)+1

或许宏定义的函数是表达式传递,而不是值传递吧


坚决不跟用TC的人打交道!
2007-08-07 21:50
leeco
Rank: 4
等 级:贵宾
威 望:10
帖 子:1026
专家分:177
注 册:2007-5-10
得分:0 
回复:(zbqf109)回复:(andy_lau)[求助]宏函数
宏根本不存在传递这个概念,它是预编译的,它做的操作只是替换
2007-08-07 22:04
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
得分:0 
宏函数这种说法就存在错误,他根本就不存在什么传递问题,
就是完完全全把的替换过来其他什么都不会为你做。

天行健,君子以自强不息!!QQ:68660681
2007-08-07 22:07
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
得分:0 
回复:(leeco)回复:(zbqf109)回复:(andy_lau)...
o, 谢谢,一些概念我还是不是很明确

坚决不跟用TC的人打交道!
2007-08-07 22:13
ConZhang
Rank: 1
来 自:北京
等 级:新手上路
帖 子:282
专家分:0
注 册:2007-8-7
得分:0 
2楼说得不对把?答案是81但是,是怎么替换的呢?
2007-08-07 22:21
ConZhang
Rank: 1
来 自:北京
等 级:新手上路
帖 子:282
专家分:0
注 册:2007-8-7
得分:0 
2楼说得不对把?答案是81但是,是怎么替换的呢?
2007-08-07 22:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-161060-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020369 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved