1、不带参数的宏定义l 一般形式:#define 宏名 字符串(或数值)即用字符串或数值取代宏名。
2、宏名一般采用大写字母表示,以与变量名区别,也可用小写字母。
3、宏定义不是C语句,不必在行末加分号。l 对程序中用“”括起来的字符串内的字符,即使与宏名相同,也不进行置换。
4、 宏定义可以嵌套使用
5、带参数的宏定义l 一般形式:#define 宏名(参数表) 字符串l 带参数的宏不占运行时间,只占编译时间;只是简单、机械字符替换;宏名无类型。 要注意有括号和没括号的区别
例题1:
#include<stdio.h>
#define f(x) x*x //没有括号
void main()
{
int i;
i=f(4+4)/f(2+2);
//运算式:4+4*4+4/2+2*2+2=4+16+2+4+2=28
printf("%d\n",i);
}
结果1:
28
PS F:\visual_studio_code\projects\fff.c\.vscode>
例题2:
#include<stdio.h>
#define f(x) ((x)*(x)) //双重括号
void main()
{
int i;
i=f(4+4)/f(2+2);
//运算式:((4+4)*(4+4))/(2+2)*(2+2)=(8*8)/(4*4)=4
printf("%d\n",i);
}
结果:
4
PS F:\visual_studio_code\projects\fff.c\.vscode>
例题3:
#include<stdio.h>
#define f(x) (x*x) //单括号
void main()
{
int i;
i=f(4+4)/f(2+2);
//运算式:(4+4*4+4)/(2+2*2+2)=(4+16+4)/(2+4+2)=3
printf("%d\n",i);
}
结果:
3
PS F:\visual_studio_code\projects\fff.c\.vscode>