写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个

转载 2013年05月15日 21:41:06

【问题】

写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个













【答案】

#define MIN(A,B) ((A) < (B) ?(A) : (B))


【解析】

这个测试是为下面的目的而设的:
  1). 标识#define在宏中应用的基本知识。这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,

              宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
  2). 三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。
  3). 懂得在宏中小心地把参数用括号括起来
  4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?
        least = MIN(*p++, b);


写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个?

“任何你真正想得到的一定是值得坚持的!”
  • qq_33044095
  • qq_33044095
  • 2016年09月27日 19:20
  • 1765

写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面的代码时会发生什么事?least = MIN(*p++, b)

#define MIN(A,B) ((A)  MIN(*p++, b)会产生宏的副作用 剖析: 这个面试题主要考查面试者对宏定义的使用,宏定义可以实现类似于函数的功能,但是它终归不是函数...
  • z507263441
  • z507263441
  • 2014年03月01日 12:25
  • 6738

C++题目(二)

1.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。 #define  SECONDS_PER_YEAR(60*60*24*365)UL 应该意识到表达式将使一个1...
  • ysu108
  • ysu108
  • 2012年08月30日 10:05
  • 2141

写一个“标准”宏,这个宏输入两个参数并返回较小的一个

宏#define min(x,y)((x)>(y)?(y):(x)) #import int main(int argc, const char * argv[]) { @autoreleas...
  • qq_24513939
  • qq_24513939
  • 2015年05月07日 22:45
  • 294

9.1 定义一个带参数的宏,使两个参数互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。

9.1 定义一个带参数的宏,使两个参数互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。 #include//9.1 定义一个带参数的宏,使两个参数互换,并写出程序,输入两个数作...
  • qslife
  • qslife
  • 2016年08月22日 20:22
  • 3170

用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

【问题】  用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) ...
  • lgbxyz
  • lgbxyz
  • 2013年05月15日 21:38
  • 883

每日一题(9)—— 写一个标准宏MIN,这个宏输入两个参数并返回较小的一个

写一个标准宏MIN,这个宏输入两个参数并返回较小的一个。 分析: 宏定义的注意两点: 1、数据类型是否有溢出的风险(如一年有多少个秒的宏); 2、带参宏的每个参数都要用括号括起来。 #defin...
  • a1314521531
  • a1314521531
  • 2017年08月07日 09:28
  • 241

第十二周OJ——定义一个带参数的宏,使两个数交换

 问题描述:定义一个带参的宏(或者模板函数),带有三个参数, 第一个参数为类型,后两个参数的值互换,并写出程序,输入两个数 作为使用宏时的实参。输出已交换后的两个值。 文件名称:the_t...
  • qq_36203090
  • qq_36203090
  • 2016年11月21日 14:48
  • 1393

定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。

#include //#define EXC(a,b) do{int t;t=a;a=b;b=t;}while(0) #define EXC(A,B) {A+=B;B=A-B;A=A-B;} usin...
  • u011053407
  • u011053407
  • 2014年05月13日 10:22
  • 2687

写一个标准宏MIN,输入两个参数,返回较小的

写一个标准宏MIN,输入两个参数,使得下面的函数返回较小的。 least = MIN(*p++,b);   错误的解法:   #define MIN(a,b) (a>=b?b:a) #de...
  • huahuahailang
  • huahuahailang
  • 2013年04月05日 13:25
  • 2265
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个
举报原因:
原因补充:

(最多只允许输入30个字)