标题:好奇怪的问题
只看楼主
amingo
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2004-8-27
 问题点数:0 回复次数:11 
好奇怪的问题

#define MA(x) x*(x-1) main() {int a=1,b=2; printf("%d",MA(1+a+b));}

结果为什么是8

搜索更多相关主题的帖子: int main define 结果 
2004-09-17 19:13
amingo
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2004-8-27
得分:0 

快来人啊~

2004-09-17 19:34
amingo
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2004-8-27
得分:0 

快来人啊~

2004-09-17 20:11
amingo
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2004-8-27
得分:0 
大虾米都哪去了`
2004-09-17 23:52
amingo
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2004-8-27
得分:0 
大虾米都哪去了`
2004-09-18 10:03
chen__han1
Rank: 1
等 级:新手上路
帖 子:256
专家分:0
注 册:2004-9-16
得分:0 

这是个宏的展开问题,给你介绍本好书《全国计算机等级考试典型考题解析和实战》 钱贵平 李虎军著

这本书上有很多之中细节问题解释的。

我有个例子

#define sum(x) x*x

sum(i+j)/sum(i+j)

展开是这样 i+j*i+j/i+j*i+j 一般都直接认为就等于1 其实不是


路漫漫其修远兮 吾将上下而求索!
2004-09-18 10:08
chen__han1
Rank: 1
等 级:新手上路
帖 子:256
专家分:0
注 册:2004-9-16
得分:0 
你是想得到(1+a+b)*((1+a+b)-1) 就应该定义时这样:#define MA(x) (x)*(x-1)

路漫漫其修远兮 吾将上下而求索!
2004-09-18 10:21
chen__han1
Rank: 1
等 级:新手上路
帖 子:256
专家分:0
注 册:2004-9-16
得分:0 

你这样展开就成了1+a+b*(1+a+b-1) 所以是8.


路漫漫其修远兮 吾将上下而求索!
2004-09-18 10:30
noah183
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2004-9-18
得分:0 

是这样吗?

我没见过阿?

为什么会是这样的情况阿?

可不可以说一下他的原理?

2004-09-18 11:25
amingo
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2004-8-27
得分:0 
9494  说下原理~
2004-09-18 12:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-5410-1-1.html




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

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