| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 521 人关注过本帖
标题:關於宏的調用
只看楼主 加入收藏
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:2 
關於宏的調用
#define MIN(A,B) ((A) <= (B) ? (A) : (B))

 請問当你写下面的代码时会发生什么事?

 least = MIN(*p++, b);
2009-08-04 16:45
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:15 
#define MIN(A,B) ((A) <= (B) ? (A) : (B))

如果把中文括号都改为西文括号,且冒号前后没有空格的话(有空格也没关系......)
编译器会把
least = MIN(*p++, b);

解释成:
least=((*p++)<=(b)?(*p++):(b);

执行时:
先取出(*p)与b比较
(1)若(*p)>b,则执行的操作为:
p++;    /*就是指针p向后移动一个位置*/
least=b;

(2)若(*p)≤b,则执行的操作为:
p++;   /*就是指针p向后移动一个位置*/
least=(*p);  /*此时p指向原来数值的下一个数*/
p++;         /*指针p再次向后移动一个位置*/


[[it] 本帖最后由 CrystalFan 于 2009-8-4 18:08 编辑 [/it]]
2009-08-04 17:08
prankmoon
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:161
专家分:921
注 册:2009-7-21
收藏
得分:5 
ls正解
2009-08-05 01:02
快速回复:關於宏的調用
数据加载中...
 
   



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

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