define 在C语言中,有很多作用,除了一些基本的概念,定义常量以外,比较有意义的就是它所定义的宏函数
一.两个数相加
#define ADD(a,b) ((a)+(b))
int main()
{
int i = 6;
int p = 17;
int q = ADD(i, p);
printf("ADD:%d\n", q);
system("pause");
return 0;
}
PS:
因为宏在使用时有很多不确定因素,所以使用时一定记住,要将每个变量用括号括起来,防止发生不可意料的错误
二.求两个数中的最大值
#define MAX(a,b) ((a)>(b)?(a):(b))
int main()
{
int i = 6;
int p = 17;
int q = MAX(i, p);
printf("ADD:%d\n", q);
system("pause");
return 0;
}
三.交换两个数
解1.
#define SWAP(a,b) {(a)=(a)^(b);(b)=(a)^(b);(a)=(a)^(b);}
int main()
{
int i = 6;
int p = 17;
printf("before i:%d\n", i);
printf("before p:%d\n", p);
SWAP(i, p);
printf("after i:%d\n", i);
printf("after p:%d\n", p);
system("pause");
return 0;
}
解2.
也可以使用do ... while语句,可以使宏函数性能更加完善
#define SWAP(a,b) \
do{ \
(a)= ((a)^(b)); \
(b) = ((a)^(b)); \
(a) = ((a)^(b)); \
}while (false)
int main()
{
int i = 6;
int p = 17;
printf("before i:%d\n", i);
printf("before p:%d\n", p);
SWAP(i, p);
printf("after i:%d\n", i);
printf("after p:%d\n", p);
system("pause");
return 0;
}