什么是宏定义
宏是直接替换之后,再进行编译的,替换发生在预编译阶段
#define MIN(x,y) (x)>(y)?x:y
#define T(x,y,r) x * r * y / 4
s1 = MIN(a = b, b - a); 替换: s1 = (a = b) > (b - a) ? (a = b) : (b - a)
s2 = T(a++, a * ++b, a + b + c); 替换:s2 = a++ * a + b + c * a * ++b / 4
代码示例
//#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define MIN(x,y) (x)>(y)?x:y
#define T(x,y,r) x*r*y/4
int main(void)
{
int a = 1, b = 3, c = 5, s1, s2;
s1 = MIN(a = b, b - a);// s1 = (a = b) > (b - a) ? (a = b) : (b - a)
s2 = T(a++, a * ++b, a + b + c);//s2 = a++ * a + b + c * a * ++b / 4
printf("%d %d\n", s1, s2);
return 0;
}
输出: