#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)