问题:写一个”标准"宏MIN ,这个宏输入两个参数并返回较小的一个。

#define Min(a,b) ( ((a)>=(b)) ? (b) : (a) )  
一定要注意加括号如果不加括号,因为define定义表达式时要注意“边缘效应”,例如如下定义:
#define N 2+3  //我们预想的N值是5,我们这样使用N
int a = N / 2;  //我们预想的a的值是2,可实际上a的值是3

原因在于在预处理阶段,编译器将a = N/2处理成了a = 2+3/2;这就是宏定义的字符串替换的"边缘效应",因此要如下定义:

#define N (2+3)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。