define属于预处理指令,跟头文件差不多
define就是文本代换,注意是文本,不是值!!!!
define主要分为两种
#include <bits/stdc++.h>
#define /*随便取一个名字*/you /*你想替换的文本*/long long
using namespace std;
int main()
{
you a,b;//在编译之后就会变成->long long a,b;
return 0;
}
#include <bits/stdc++.h>
#define ADD(a,b,c)/*注意a,b,c不是参数,只是一个字符……*/ a + b + c
using namespace std;
int main()
{
cout << ADD(1,2,3);//编译之后就变成了ADD(1,2,3) -> 1 + 2 + 3
return 0;
}
出个题考考大家:
下面代码会输出几
#include <bits/stdc++.h>
#define A_B 3+4
using namespace std;
int main()
{
cout << 2 * A_B << endl;
return 0;
}
相信很多小白都会回答2 * 7 = 14,
但是,define是单纯的文本转换,不是值转换,所以他不会先把3 + 4 = 7算出来,而是直接把3 + 4带进去,就变成了 2 * 3 + 4 = 10
所以一般来说,尽量不要使用define。
注:不喜忽喷