| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1052 人关注过本帖
标题:比较两个程序,为什么一对一错?
只看楼主 加入收藏
li39601
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-3-18
收藏
 问题点数:0 回复次数:17 
比较两个程序,为什么一对一错?

比较下面两个程序,为什么程序1正确,程序2却是误的?错在哪了?
程序1:
#include <stdio.h>
#define R(x) x*x
main()
{int a;
int i=4;
a=++R(i+2);
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);
b=++s(a-2);
printf("%d,%d",k,b);}

搜索更多相关主题的帖子: int define include stdio 
2006-03-23 20:11
sunnvya
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1094
专家分:0
注 册:2005-11-23
收藏
得分:0 
b=++s(a-2);
需要逻辑0或非0在 main 函数中

http://www. 第二站>>>提供源码下载
2006-03-23 20:15
偶成
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2006-3-4
收藏
得分:0 
我的理解是
第二个你把宏定义的部分代替过去.
b=++(a-2*a-2-1)*a-2 这个自加是对一个表达式自加,是不允许的.
不过即使第一个你可以通过编译出来的结果,也和你预期的不同的吧,

几年前,丢失了求知欲,游荡在游戏世界中. 而今寻找回了求知欲,希望通过自学充实自己.努力中...
2006-03-23 21:05
sunnvya
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1094
专家分:0
注 册:2005-11-23
收藏
得分:0 

这样改第2个:
#include <stdio.h>
#define s(x) x*(x*x-1)
main()
{int a=5,b,k;
k=s(a-2);
b=++s(a-2);
printf("%d,%d",k,b);}
现在可以了!


http://www. 第二站>>>提供源码下载
2006-03-23 21:08
haishanglang
Rank: 1
等 级:新手上路
帖 子:378
专家分:0
注 册:2006-3-2
收藏
得分:0 
是啦,我说过的,用宏定义的函数求出的值误差很大的

2006-03-23 21:31
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 

把宏替换掉
注意没有加括号的就是没有括号


2006-03-24 09:17
oヤ偽妳變壞
Rank: 2
等 级:新手上路
威 望:4
帖 子:2251
专家分:0
注 册:2006-3-19
收藏
得分:0 
2006-03-24 15:43
yqz_b
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2006-3-1
收藏
得分:0 
三楼说的对。
以这样风格进行宏定义是不好的。注意括号的使用。
2006-03-24 16:40
仁者无敌
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2006-3-5
收藏
得分:0 

那一个岂不成了a=++i+2*i+2?


I am a programmer !
2006-03-28 07:04
crazyrabbit
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:150
专家分:0
注 册:2006-3-15
收藏
得分:0 
最好不要用宏.这样不安全的.知道不?

http://www./bbs/boke.asp?crazyrabbit.index.html 欢迎大家来此讨论问题!
2006-03-28 08:41
快速回复:比较两个程序,为什么一对一错?
数据加载中...
 
   



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

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