宏定义–define
define结构
#define <需要替换的名字> <替换后的值>
需要注意的是替换后的值不仅限于数字
例子一
#include <bits/stdc++.h>
#define PI 3.14
using namespace std;
int main()
{
cout << PI << endl ;
return 0;
}
例子二
#include <bits/stdc++.h>
#define hi "hello"
using namespace std;
int main()
{
cout << hi << endl ;
return 0;
}
另外,宏也可以带有参数
例子三
这个例子需要讲一下
当宏里带有参数时,如带有参数x。
建议在值里每一个x都加上括号。
因为当x为一位多项式而宏的参数之间相乘除时
不加括号会按先乘除后加减运算
这里就成了a+1a+1a+1
结果显示不是我们想得到的结果
#include <bits/stdc++.h>
#define three(x) ((x)*(x)*(x)) //不能写成(x*x*x)
using namespace std;
int main()
{
int a=5;
int ans=three(a+1);
cout << ans << endl ;
return 0;
}
宏的值里面可以带有其他的宏,会一同替换
例子四
注意顺序,与函数调用相反,一个宏的值里的其他宏要放在这个宏的下面
#include <bits/stdc++.h>
#define PI+ (PI+10)
#define PI 3.14 //这两个宏顺序不能调换!!!
using namespace std;
int main()
{
cout << PI << endl ;
return 0;
}
宏的两个注意事项
一:宏的名字,即上面的PI,PI+ 都只能是一个单词,中间不能有空格
二:宏不是c语言的程序部分,不需要在末尾加上分号