为了账号安全,请及时绑定邮箱和手机立即绑定

#define的用法

#define的用法

C
慕容0566771 2016-12-04 00:35:16
#define
查看完整描述

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


查看完整回答
反对 回复 2016-12-05
?
shark霯霯

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。//img1.sycdn.imooc.com//58430e000001325904550155.jpg

宏定义还有另外一个带参数的形式:

#define 宏名(参数列表) 替代正文

注意:此时,宏名和(参数列表)中间是没有空格的,参数列表里的参数是没有类型的。

宏替代不在是简单的文本替代,而是中途要转个弯,即实参文本代替替代正文中对应的参数,但是还是没有优先级。

eg:#define MUL(X,Y) X*Y

 printf(“%d”,MUL(5,3));//img1.sycdn.imooc.com//5843112b00019b7104290131.jpg

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);```````````}//img1.sycdn.imooc.com//5843137400015bb301560071.jpg

我的笔记就做这么多/手动围笑/,希望能帮到你~~~~

查看完整回答
反对 回复 2016-12-04
  • 2 回答
  • 0 关注
  • 1619 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信