例
#define N 1000
#define M N + 200
#define k 3 * N + 4 * M + M / 2
上述中,他的表达式应该为 3 * 1000 + 4 * 1000 + 200 + 1000 + 200 / 2
而不是 3 * 1000 + 4 * (1000 + 200) + (1000 + 200) / 2
这样
如果我们需要让表达式像第二条式子这样处理,我们可以这样处理3 * N + 4 * (M) + (M) / 2
宏定义的运算问题
#include <stdio.h>
#define PE1(n) n * n + 2 * n
#define PE2(n) (n) * (n) + 2 * (n)
int main()
{
int i = 1, j = 3;
while (i <= 3)
{
printf("%5d", PE1(i + j));
printf("%5d\n", PE2(i + j));
i++;
}
return 0;
}
#if 0
PE1计算方式是 i + j * i + j + 2 * i + j;
PE2计算方式是 (i + j) * (i + j) + 2 * (i + j);
#endif
结果为: