| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1025 人关注过本帖
标题:有关编译预处理--宏的问题
只看楼主 加入收藏
plane5530
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2007-1-19
结帖率:83.33%
收藏
 问题点数:0 回复次数:11 
有关编译预处理--宏的问题
#define X 5
#define Y X+1
#define Z Y*X/2
main()
{int a ;
a=Y;
printf("%d,%d\n",Z,--a);
}

我是这样理解的:Z=X+1*X/2, Z=5+1*5/2=7.5
a=Y=5+1=6,--a=5;
但标准答案是7,5

[此贴子已经被作者于2007-3-14 13:04:03编辑过]

搜索更多相关主题的帖子: 预处理 编译 
2007-03-14 12:55
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
肯定又是( )的问题

雁无留踪之意,水无取影之心
2007-03-14 12:58
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
我没调试,你把这句#define Z Y*X/2改成#define Z (Y)*(X)/2试试

雁无留踪之意,水无取影之心
2007-03-14 12:58
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
我看错了,最后输出是以整型输出,会省略小数点后面的数

雁无留踪之意,水无取影之心
2007-03-14 13:02
无玩过界
Rank: 1
等 级:新手上路
威 望:2
帖 子:246
专家分:0
注 册:2007-2-20
收藏
得分:0 
这里理解错Z=5+1*5/2=7.5
5/2=2

2007-03-14 13:02
tianykun
Rank: 4
等 级:禁止访问
威 望:11
帖 子:3727
专家分:0
注 册:2005-11-13
收藏
得分:0 
我算到是15,5的???

离开这里,离开你的视野,归隐到属于我的地方,无论何处
2007-03-14 13:03
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
LZ a都没定义...
会有结果?没报错!
那就奇怪了!
在这里可能是当作整形处理!
所以输出为7,去掉小数部分!

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-03-14 13:05
plane5530
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2007-1-19
收藏
得分:0 
Z为什么会是整形数呢?
2007-03-14 13:05
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
5楼说的是正确的,我说错了,这个滥C语言

雁无留踪之意,水无取影之心
2007-03-14 13:06
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 
因为a为整形!  进儿Y边为整形  进而X变为整形  进而Z就变为整形了!

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-03-14 13:08
快速回复:有关编译预处理--宏的问题
数据加载中...
 
   



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

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