| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 974 人关注过本帖
标题:[求助]宏函数
只看楼主 加入收藏
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
帖 子:1029
专家分: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
帖 子:1029
专家分: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
快速回复:[求助]宏函数
数据加载中...
 
   



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

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