define宏定义的使用

宏定义–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语言的程序部分,不需要在末尾加上分号

发布了44 篇原创文章 · 获赞 13 · 访问量 2348

猜你喜欢

转载自blog.csdn.net/NEFU_kadia/article/details/104166307