搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 有关于预处理define的问题
标题:
有关于预处理define的问题
只看楼主
bb060789000
等 级:
论坛游民
帖 子:15
专家分:10
注 册:2009-8-28
结帖率:
66.67%
楼主
已结贴
√
问题点数:20 回复次数:13
有关于预处理define的问题
程序如下:
#define f(r) r*r
#include<stdio.h>
main( )
{ int i;
i=f(4+4);
printf("%d\n",i);
}
结果是:24
我想问的是为什么结果不是64呢? 我想问,是不是先求出4+4之后再代入到r里的, 希望给出解此题的思路。
搜索更多相关主题的帖子:
预处理
define
2009-08-28 14:46
zhengzhihui
来 自:汕头大学
等 级:
论坛游民
帖 子:36
专家分:57
注 册:2009-7-4
第
2
楼
得分:5
很简单吗,r=4+4,代入之后是4+4*4+4=24;
要想得到64,必须定义成这样"#define f(x) (r)*(r).
2009-08-28 14:57
jammyzm
等 级:
论坛游侠
帖 子:90
专家分:126
注 册:2008-12-1
第
3
楼
得分:0
GOOD
2009-08-28 15:02
Kiu
等 级:
论坛游侠
帖 子:68
专家分:107
注 册:2009-7-31
第
4
楼
得分:0
2009-08-28 16:07
bb060789000
等 级:
论坛游民
帖 子:15
专家分:10
注 册:2009-8-28
第
5
楼
得分:0
#define f(r) r*r
#include<stdio.h>
main( )
{ int i;
i=f(4+4)/f(2+2);
printf("%d\n",i);
}
结果是:28
那又为什么呢??? 希望详细点讲一下,thx
2009-08-28 16:17
xdyuan33
来 自:广西大学化工学院
等 级:
论坛游侠
帖 子:146
专家分:145
注 册:2009-7-24
第
6
楼
得分:15
带参数的宏仅仅是作(简单的替换)而已,它展开时并不求参数的值。
#infine f(r) r * r
| |
| |
#infine f(a+b) a+b * a+b
| |
| |
#infine f(4+4) 4+4 * 4+4
这样看可能好看一点,就是a+b换r, 第二个宏展开就是:a+b * a+b
换成f(4+4)那就是: 4+4 * 4+4 = 4+4*4+4=24
参与切磋是美德,每天回帖即可获得10分可用分!
2009-08-28 18:51
luoweijun
等 级:
论坛游侠
帖 子:67
专家分:138
注 册:2009-6-12
第
7
楼
得分:0
楼上的很详细,我说下28 的原因
上边的程序时这样计算的4+4*4+4/2+2*2+2=28
2009-08-28 19:52
liangonejzh
等 级:
论坛游民
帖 子:20
专家分:18
注 册:2009-7-30
第
8
楼
得分:0
2009-08-28 19:57
xuleiyee001
等 级:
论坛游民
帖 子:44
专家分:17
注 册:2009-4-21
第
9
楼
得分:0
预处理只是字符替换,不会计算的
2009-08-28 20:06
bb060789000
等 级:
论坛游民
帖 子:15
专家分:10
注 册:2009-8-28
第
10
楼
得分:0
很好很强大,一看就明白了,都是怪我看书没有看仔细点,真的多谢晒啦,哈哈,不要怪我学得慢,因为我已经很努力了。
2009-08-30 02:00
14
1/2页
1
2
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-283971-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.224152 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved