宏
宏 什么是宏?
1、 用一个字符串表示有意义的常量或常量表达式被称为宏
2、 使用宏可以增加程序的灵活性
3、 宏为了区分变量一般用大写字母,也可以用小写字母
4、 宏不是语句,所以在定义宏的时候不要加分号,若加了则会连同分号一起替换
5、 宏可以嵌套定义
6、 宏一般写在文件的开头,如果有头文件,则放在头文件的下面
7、 在字符串里面即使有宏名也不做替换
8、 宏的运行原理: 先替换,再代值 如何来定义宏
A: 无参宏
格式:
#define 宏名 常量或常量表达式
ex: #define PI 3.14 //以后在程序中看到PI就用3.14替换
B:有无参宏 宏可以嵌套定义: #define M 3
#define N M+4
#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=%.2f,s2=%.2f,s3=%.2f",s1,s2,s3);
}
define M 2
define N M+M
main()
{
int k1,k2;
k1=M*N;//M*M+M
k2=N*N;//M+M*M+M
printf("k1=%d,k2+5d",k1,k2);
}
define M 2
define N M-3
define K N-M
main()
{
int k1,k2;
k1=K*M/k-M; //N-M*M/N-M-M=M-3-M*M/M-3-M-M=2-3-4/2-3-2-2=-10
k2=K/K; //N-M/N-M=M-3-M/M-3-M=-7
printf("k1=%d,k2=%d",k1,k2);
}
B:有参宏: 格式: #define 宏名 (参数) 表达式
#define FUN(x,y) x*y
1、 有参宏的参数不要加上类型
2、 有参宏的参数是先替换再代值
#define FUN(x,y) x*y
main()
{
int a=3,b=4,k;
k=FUN(a,d);
printf("k=%d",k);
}
#define FUN(x,y) x*y
main()
{
int a=3,b=4,k;
k=FUN(a+b,a-b);//先替换再代值
//k=a+b*a-b=3+12-4=11
printf("k=%d",k);
}
#define F1(x,y) x*y
#define F2(x,y) F1(x+y,x-y)*F1(x-y,x+y);
main( )
{
int a=1,b=2,k;
k=F2(a+b,a-b);//先替换再代值
//k=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=
printf("k=%d",k);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)