在C语言中,#define
是用来定义预处理宏的指令。预处理宏是在编译阶段被展开并替换的标识符,它可以用于简化代码和提高代码的可读性。宏函数被调用时是以实参代替形参,而不是“值传递”
#define sum(x) (x)+(x) 定义了一个宏函数 sum,它接受一个参数 x,并返回 (x) + (x) 的结果。假如我们要printf("%d",sum(2)*sum(2)),根据定义的宏函数 sum,sum(2) 会被展开为 (2) + (2),所以 sum(2) * sum(2) 就是 (2) + (2) * (2) + (2)。按照正常的运算顺序,乘法会被优先计算,然后是加法。因此,sum(2) * sum(2) 的结果是 (2) + (2) * (2) + (2) = 2 + 4 + 2 = 8;
(这类定义主要看括号以及记住#define sum(x) (x)+(x),sum宏函数并不是返回计算好的值,而是式子。)
简单写出来C语言程序看看
#include <stdio.h>
#define sum(x) (x)+(x)
int main()
{
printf("%d",sum(2)*sum(2));
return 0;
}
运行结果