2 回答
TA贡献1017条经验 获得超1032个赞
#define这是宏定义,它的作用是《1》让某一个标识符用一个字符串等价代替,或者《2》用来定义宏函数。
#define PI 3,14159//作用:程序里出现PI就先用3.14159代换掉 eg: printf("%f\n",4*PI);<---->printf("%f\n",4*3.14159);
eg: #define MAX(x) x*x printf("%d\n",MAX(3+4));//输出19 //等价于:printf("%d\n",3+4*3+4);注意是直接等价替换,不要先运算得了个49
TA贡献2条经验 获得超0个赞
昨天刚学,刚好认真听了课··233
以#define开始的行成为宏定义命令行。其定义形式是#define 宏名 替代正文 (宏名和替代正文之间至少有一个空格)
此处注意,宏定义结束不用添加“;”,替代正文可以很长,可以是任何文本,中途可以换行,换行时注意,行尾“\”,然后下一行顶格写,否则中途的空格会被认为是替代正文。
eg:#define PI 3.14159
#define PI 3.14\
159
#define PI 3.14\
159
以上两个换行例子是不一样的。
宏替代是纯粹简单的文本,没有优先级的存在。
eg:#define A 3+5
printf(“%d”,A *2);
输出来的结果是13,而非16。
宏定义还有另外一个带参数的形式:
#define 宏名(参数列表) 替代正文
注意:此时,宏名和(参数列表)中间是没有空格的,参数列表里的参数是没有类型的。
宏替代不在是简单的文本替代,而是中途要转个弯,即实参文本代替替代正文中对应的参数,但是还是没有优先级。
eg:#define MUL(X,Y) X*Y
printf(“%d”,MUL(5,3));
printf(“%d”,MUL(5,3+2));
我的理解是纯粹的文本代替,没有优先级即完全替代,不加括号。
#define宏定义是写在预处理部分的,即在int main的外围;
#define 常常用来定义常数(如圆周率)
#define常替换函数(eg:#define max(a,b) (a)>(b)?(a):(b)
{int d=max(5+3,4);```````````}
我的笔记就做这么多/手动围笑/,希望能帮到你~~~~
- 2 回答
- 0 关注
- 1619 浏览
添加回答
举报