| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1666 人关注过本帖
标题:宏的问题
只看楼主 加入收藏
xuwinsun
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2004-8-17
收藏
 问题点数:0 回复次数:35 
宏的问题
#define MIN(x,y) (x)>(y)?(x):(y)

#define T(x,y,r) (x*r*y)/4

main()

{

int a=1,b=3,c=5,s1,s2;

s1=MIN(a=b,b-a);

 s2=T(a++,a*++b,a+b+c);

printf("%d,%d\n",s1,s2);

    getch();    /* 请不要删除此行 */

}



请教,s2为什么等于28?

谢谢

2004-08-17 15:08
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

人算+机算 怎么都是得18啊

你这题目是不是从谭浩强写的一本书中找出来的?因为当初好象我也做过,也是得18,我就认为是答案错了。


淘宝杜琨
2004-08-17 16:00
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

108

#define T(x,y,r) (x*r*y)/4

=====》

#define T(x,y,r) (x)*(r)*(y)/4


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-08-17 18:52
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 

不必要讨论这个,实际情况当中是不允许搞这种特殊情况的,为了可读性,要另外写代码。

PS,神,怎么又上了?

2004-08-17 19:26
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 
闷了,再看看,自己应该能解决

相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2004-08-17 21:33
xuwinsun
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2004-8-17
收藏
得分:0 
是谭老的习题集上的,
计算机算出是28
可就是不明白为什么?



我:“日本人也算人?” 上帝:“不算。将它们圈养就行了。美国人在它们头上扔两蛋不就乖得很吗?你们讲究什么仁义道德?” http://www./bbs/dispbbs.asp?BoardID=1&RootID=36493&id=36500&star=1&skin=0
2004-08-18 09:43
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 

我运行了一次,也是18,这样那??

a++*a+b+c*a*++b;因为对b有一个先加加,所以 b的值为4,结果是73。


差点把你忘了...
2004-08-18 10:05
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 
楼主用计算怎么会是28呢?我们用计算都是18嘛,用的都是turbo C,你不会用的是VC吧?至于为什么是18我还不清楚,就只有等神来解释了,如果只按照课本的解释绝对不是18,可能编译器里还有些小问题,应该是和编译器处理宏的方式有关

相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2004-08-18 10:14
xuwinsun
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2004-8-17
收藏
得分:0 
#define MIN(x,y) (x)>(y)?(x):(y)
#define T(x,y,r) x*r*y/4
main()
{
int a=1,b=3,c=5,s1,s2;

s1=MIN(a=b,b-a);
 s2=T(a++,a*++b,a+b+c);

printf("%d,%d\n",s1,s2);
   
}



不好意思,输入调试时多了()。
将第二个#define 改成     #define  x*r*y/4
结果就是28。



郁闷!
为什么啊?

我:“日本人也算人?” 上帝:“不算。将它们圈养就行了。美国人在它们头上扔两蛋不就乖得很吗?你们讲究什么仁义道德?” http://www./bbs/dispbbs.asp?BoardID=1&RootID=36493&id=36500&star=1&skin=0
2004-08-18 10:29
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 

a++*a+b+c*a*++b/4,正好是28!!!

计算一下不就出来了,写成这样后就主要是先加加和后加加的正确运算了!


差点把你忘了...
2004-08-18 10:35
快速回复:宏的问题
数据加载中...
 
   



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

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