关于宏替换
#define N 3 #define Y(n) ((N+1)*n) z=2*(N+Y(5+1)); z = 2*(N + (N+1)*5+1); z = 2*(3 + 4*5+1); z = 48
上面是一个超级常见的题目
另一种:
#define PI 3.14; int main() { double r = 10, s = 0; s = r * r * PI; s = PI * r * r; // s = 3.14; * r * r; printf("%f \n",s); return 0; }
在使用#define时 如 #define PI 3.14 最好不要写成 #define PI 3.14;
这样程序在预编译的时候 进行宏替换 会将PI 直接替换成 3.14;
当 s=r*r*PI; 时会替换成 s=r*r*3.14;;程序运行时只是产生了空语句,不进行语法报错,
而 s=PI*r*r; 时 会替换成s=3.14;*r*r; 程序报错