C语言当中的宏定义,宏的相关概念和作用和用法
一、什么是宏1、用一个字符串表示有意义的常量或常量表达式(被称为宏)二、如何来定义宏1、宏的分类:A、有参宏:格式:#define宏名常量或常量表达式比如:#definePI3.14(以后在程序当中只要看到了PI就代表3.14)#include<stdio.h>#define PI 3.14void main(){int r =...
·
一、什么是宏
1、用一个字符串表示有意义的常量或常量表达式(被称为宏)
二、如何来定义宏
1、宏的分类:
A、有参宏:
格式:
#define 宏名 常量或常量表达式
比如:
#define PI 3.14 (以后在程序当中只要看到了PI就代表3.14)
#include<stdio.h>
#define PI 3.14
void main(){
int r = 2;
float s1,s2,s3;
s1=2*PI*r;//圆的周长
s2=2*PI*r*r;//圆的面积
s3=4*PI*r*r;//求的表面积
printf("s1=%1.f,s2=%1.f,s3=%1.f",s1,s2,s3);
}
1、使用宏可以增加程序的灵活性
2、宏名为了区分变量一般用大写字母来表示,当然也可以用小写字母。
3、宏不是语句,所以在定义宏的时候不要加分号,如果加了分号则会连同分号一同替换。
4、宏可以嵌套定义
//宏的嵌套定义
#define M 3
#define N M+4
5、宏一般写在程序的开头。如果有头文件则将宏放在头文件的下面。
6、在字符串里面当中即使有宏名也不做替换。
7、宏的运行原理:“先替换,再代值” 看以下例子
例一、
#include<stdio.h>
#define M 2
#define N M+M
void main(){
int k1,k2;
k1=M*N;//2*2+2=6
k2=N*M;//2+2*2=6
printf("k1=%d,k2=%d",k1,k2);
}
宏是什么就是什么,直接替换,定义宏时没有括号那么在使用的时候也没有括号
例二:
#include<stdio.h>
#define M 2
#define N M-3
#define K N-M
void main(){
int k1,k2;
k1=K*M/K-M;//N-M*M/N-M-M=M-3*2/M-3-2-2=2-3*2/2-3-3-3=-10
k2=K/K;//N-M/N-M=M-3-M/M-3-M=2-3-2/2-3-2=2-3-1-3=2-3-1-3-2=-7
printf("k1=%d,k2=%d",k1,k2);
}
B、无参宏:
格式:
#define 宏名 (参数) 表达式
比如:
#define FUN(x,y) x*y
1、无参宏的参数不要加上类型
2、无参宏的参数是先替换再代值
案例一、
#include<stdio.h>
#define FUN(x,y) x*y
void main(){
int a=3,b=4,k;
k=FUN(a,b);
printf("%d",k);
}
案例二、
#include<stdio.h>
#define FUN(x,y) x*y
void main(){
int a=3,b=4,k;
k=FUN(a+b,a-b);//a+b*a-b=3+4*3-4=11
printf("k=%d",k);
}
变化上述案例
案例三、
#include<stdio.h>
#define F1(x,y) x*y
#define F2(x,y) F1(x+y,x-y)*F1(x-y,x+y)
void main(){
int a=3,b=2,k;
k=F2(a-b,a+b);
/*F1(a-b+a+b,a-b-a+b)*F1(a-b-a+b,a-b+a+b)
=a-b+a+b*a-b-a+b*a-b-a+b*a-b+a+b
=3-2+3+2*3-2-3+2*3-2-3+2*3-2+3+2
=3-2+3+6-2-3+6-2-3+6-2+3+2
=15*/
printf("k=%d",k);
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献17条内容
所有评论(0)