标题:关于“编译预处理和动态存储分配”的一个小小问题
取消只看楼主
wcghappy
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-2-25
 问题点数:0 回复次数:4 
关于“编译预处理和动态存储分配”的一个小小问题
#include<stdio.h>
#define MIN(x,y) (x)<(y)?(x):(y)
main()
{
    int i,j,k;
    i=10;
    j=15;
    k=10*MIN(i,j);
    printf("%d\n",k);
}

这个值为什么是15呢?
看看我算的哪里不对呗?
我的思路:宏定义里面的x与y被赋值成了10和15.
然后进行比较,判断x与y的大小,如果x<y成立,则输出x的值。
然后在通过公式:k=10*MIN(i,j) k=10*15=150 答案就是150 不对啊~~!  为什么是15呢?
搜索更多相关主题的帖子: 动态 预处理 编译 
2008-03-12 19:45
wcghappy
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-2-25
得分:0 
具体一下呗 初学者不是很明白的
2008-03-12 19:51
wcghappy
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-2-25
得分:0 
还是不明白,具体点吧~
就是k到底等于什么?
2008-03-12 20:02
wcghappy
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-2-25
得分:0 
谢谢大家了~
太感谢了~
2008-03-13 15:43
wcghappy
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-2-25
得分:0 
[bo]以下是引用 [un]死了都要C[/un] 在 2008-3-12 20:18 的发言:[/bo]

我把它扩展一下:

开始:
#define MIN(x,y) (x)

原来这样。。。一个小小的宏有这么多骗人的地方
哎。。。。
2008-03-13 15:46



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




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

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