| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1052 人关注过本帖
标题:比较两个程序,为什么一对一错?
只看楼主 加入收藏
sunnvya
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1094
专家分:0
注 册:2005-11-23
收藏
得分:0 
宏都快被淘汰了

http://www. 第二站>>>提供源码下载
2006-03-28 08:48
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:0 
为了避免宏定义的歧义,请用这样格式严格定义宏:
#define R(x) ((x)*(x))
#define s(x) (((x)*(x)-1)*(x))

够坚固了吧!呵呵!
2006-03-28 09:04
风的呼吸
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-11-16
收藏
得分:0 

2006-03-29 22:06
zhangyuhangk
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-3-29
收藏
得分:0 
为了避免宏定义的歧义,请用这样格式严格定义宏:
#define R(x) ((x)*(x))
#define s(x) (((x)*(x)-1)*(x))

够坚固了吧!呵呵!
-------------------------------------------
12楼的够坚挺啊~~~
2006-03-30 01:52
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
呵呵,这样是牢固了,可是很烦了.

对不礼貌的女生收钱......
2006-04-07 17:58
Adminstrator
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-20
收藏
得分:0 

带有变量的宏定义不要有优先级差别

2006-04-07 22:15
Lunar
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-6
收藏
得分:0 
*的优先级比+和-都高,最好使用括号,虽然麻烦,但清楚又不易出错
2006-04-07 22:22
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
#include <stdio.h>
#define R(x) x*x
main()
{int a;
int i=4;
a=++R(i+2); /*相当于a=++i+2*i*2 ,计算时,先算++i,此时i=5,然后5+10+2就是17 */
printf("%d\n",a);}



程序2
#include <stdio.h>
#define s(x) (x*x-1)*x
main()
{int a=5,b,k;
k=s(a-2); /*相当于k=(a-2*a-2-1)*a-2=(5-2*5-2-1)*5-2=-42 */
b=++s(a-2); /*相当于b=++(a-2*a-2-1)*a-2。对于一个非变量是无法执行++这个运算符,所以编译不了*/
printf("%d,%d",k,b);
getch();}


我总结一点:宏反正就是替换,不要随意加括号

2006-04-08 10:59
快速回复:比较两个程序,为什么一对一错?
数据加载中...
 
   



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

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