| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 633 人关注过本帖
标题:还是编译预处理的问题,俺已经崩溃列~~~~~~~~~~~~~
只看楼主 加入收藏
黑白格子布
Rank: 1
等 级:新手上路
威 望:1
帖 子:67
专家分:0
注 册:2005-12-11
收藏
 问题点数:0 回复次数:4 
还是编译预处理的问题,俺已经崩溃列~~~~~~~~~~~~~

#define PRINT(Y) printf("Y=%d\t",Y)

main()
{……
int t=3;
……
PRINT(t);
}

答案是:
Y=3

为什么前面那个Y不会被替代呢???

最后一个,再不糟践大家了~~~
#define MIN(x,y) (x)>(y)?(x)y)
#define T(x,y,r) x*r*y/4
执行下列语句后s1,s2值为
int a=1,b=3,c=5,s2;
s1=MIN(a=b,b-a);
s2=T(a++,a*++b,a+b+c);

s1没问题了,3,s2呢??我做35,答案又不对,s1做完a已经变成3了呗
a++*a+b+c*a*++b/4
不就是3*4+3+5*4*4/4嘛~~不是35???

偶已经崩溃了~~~~~~~~~~~大家一定要帮我~~~~~~~~~~~~~
谢谢了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

搜索更多相关主题的帖子: 预处理 编译 
2005-12-11 21:03
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

#define c(s) #s
#define a(s,f) s##f
#define PRINT(Y) printf(a(c(Y),"=%d\t"),Y)

main()
{
int t=3;

PRINT(t);
}


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-12-11 21:33
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
第二个问题自己想,想破你的脑袋我也不管了...

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-12-11 21:37
cherrysindow
Rank: 2
等 级:论坛游民
帖 子:124
专家分:10
注 册:2005-10-21
收藏
得分:0 

第二个问题答案

由于预处理是在程序执行以前

所以替换以后的式子为:

a++*a+b+c*a*++b/4

所以应该为:

3*3+4+5*3*4/4=28

这是由于自加是这样处理的:

扫描当前要处理的式子里的所有自加次数

然后看情况加,然后处理

所以在一个这样的式子里的


int a=1;


(a++)+(a++)=2;


int a=1;


(a++)+(++a)=4


虽然我很普通,但是我很讲道理 如果我的问题冒犯了您 请不要生气 因为我是无意的
2005-12-11 21:54
黑白格子布
Rank: 1
等 级:新手上路
威 望:1
帖 子:67
专家分:0
注 册:2005-12-11
收藏
得分:0 
谢谢大哥,第2个问题明白了~~~~~~~~~~~~

可是魔鬼斑竹大人~~~~~~你的解释偶没有看懂的说~~~~~~~~~何止是想破脑袋就能想明白的呀~~~~~~我是笨的够可以了~~~~不过看在我求学上进的份上能不能给多讲一讲呢~~~~~~~~~谢谢谢谢~~~~~~~~~

PS:我崇拜的不行,打算拜二位为师,不知意下如何???

2005-12-16 17:57
快速回复:还是编译预处理的问题,俺已经崩溃列~~~~~~~~~~~~~
数据加载中...
 
   



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

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