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

写一个标准宏MIN,输入两个参数,使得下面的函数返回较小的。

least = MIN(*p++,b);

 

错误的解法:

 

#define MIN(a,b) (a>=b?b:a)
#define MIN(a,b) (a)>=(b)?(b):(a)


 

正确的解法:

#define MIN(a,b) ((a)>=(b)?(b):(a))


但是:

MIN(*p++,b)会产生副作用。

((*p++)>=(b)?(b):(*p++))这个表达式会使得指针p作2次自增操作。

 

你可能感兴趣的:(写一个标准宏MIN,输入两个参数,返回较小的)