| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1004 人关注过本帖
标题:宏替换问题,这样也行吗???
只看楼主 加入收藏
ConZhang
Rank: 1
来 自:北京
等 级:新手上路
帖 子:282
专家分:0
注 册:2007-8-7
收藏
得分:0 
初学者,我也没有看懂,这是怎么回事?能不能详细点讲一下?
谢谢
2007-08-07 22:17
一个低手
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-8-6
收藏
得分:0 
S(x)4*x*x+1
main()
{ int i=6,i=8;
printf("%d\n",S(i+j))
}
S(i+j)这里宏替换成S(i+j)=4*(i+j)*(i+j)+1
就是把X用 S括号内的表达试的值替换掉
2007-08-08 10:34
anelwl
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-26
收藏
得分:0 
回复:(andy_lau)有个程序不懂,如下:#define S(x)...
你这里#define S(x) 4*x*x+1 应该写成4*(x)*(x)+1因为被替换的时候系统不会自动帮你加上括号的,因此最好写成这样4*(x)*(x)+1

2007-08-08 10:56
jackys2006
Rank: 1
等 级:新手上路
帖 子:195
专家分:0
注 册:2006-3-10
收藏
得分:0 
以下是引用andy_lau在2007-8-7 21:31:46的发言:
有个程序不懂,如下:
#define S(x)4*x*x+1
main()
{ int i=6,j=8;
printf("%d\n",S(i+j))
}
答案是81。解释:S(i+j)被替换为4*i+j*i+j+1.不懂的是:为什么是这样替换的?替换的过程这样理解??

规范的带参数的宏应该这样定义
#define S(x) (4*(x)*(x)+1)
也就是说,把每个参数用括号加上,再把整个表达式加上括号


2007-08-08 13:11
viky2003
Rank: 5Rank: 5
等 级:职业侠客
帖 子:375
专家分:383
注 册:2007-4-11
收藏
得分:0 
以下是引用jackys2006在2007-8-8 13:11:50的发言:

规范的带参数的宏应该这样定义
#define S(x) (4*(x)*(x)+1)
也就是说,把每个参数用括号加上,再把整个表达式加上括号

同意!!!


要练习算法就来http:///!!有挑战哦!!
2007-08-08 13:23
快速回复:宏替换问题,这样也行吗???
数据加载中...
 
   



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

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