网站大量收购独家精品文档,联系QQ:2885784924

C语言程序设计技能教程戴佩荣等第8章节.ppt

C语言程序设计技能教程戴佩荣等第8章节.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 编译预处理 第 八章 8.1 技能1 【知识点】 1. 预处理命令#define定义了一个标识符,并在每次出现标识符时用一个字符串去代替它。这个标识符称为“宏名”。而替换过程称为“宏代换”或“宏展开”。 2. 宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。在C语言中,“宏”分为有参数和无参数两种。 3. 无参宏的宏名后不带参数。其定义的一般形式为: #define 标识符 字符串 理论与上机实习双指导 理论与上机实习双指导 理论与上机实习双指导 馋死 尚辅网 / 8.1 技能1:掌握宏定义的使用 8.2 技能2:读懂含有包含文件的程序 8.3 技能3:读懂含有条件编译的程序 8.1.1 不带参数的宏定义 8.1 技能1 【典型例题】 例8.1 写出下面程序段的运行结果。 #define M (2*y+3) main(){  int z,y; printf(请输入一个数: ); scanf(%d,y); z=2*M*M +5*M+1; printf(z=%d\n,z); } 8.1.1 不带参数的宏定义 8.1 技能1 【典型例题】 例8.2 写出下面程序段的运行结果。 #define PI 3.14159 #define R 2.0 #define S PI*R*R main() {float z; z=3*S*S; printf(z=%f\n,z); } 8.1.1 不带参数的宏定义 8.1 技能1 【典型例题】 例8.3 写出下面程序段的运行结果。 #define P printf #define D %d\n #define F %f\n main() { int a=1, b=2, c=3; float d=1.5, e=2.6, f=3.7; P(D F,a,d); P(D F,b,e); P(D F,c,f); } 8.1.1 不带参数的宏定义 8.1 技能1 【点拨】 8.1.1 不带参数的宏定义 1. 宏代换就是一种简单的代换,宏定义用宏名表示一个字符串,在宏展开时用这个字符串取代宏名,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查,因此如果有错误,只能在编译已经宏展开后的源程序时发现。 2. 在源程序中如果宏名用引号括起来,那么预处理程序则不对其作宏代换。 3. 宏定义允许嵌套,已经定义的宏名可以在宏定义的字符串中使用。由预处理程序在宏展开时层层代换。 8.1 技能1 【点拨】 8.1.1 不带参数的宏定义 4. 一般宏名用大写字母表示,以利于同变量区别,但也可以用小写字母表示。 5. 数据类型也可用宏定义来表示,使书写方便,但在使用时要小心,以免出错。 6. 宏定义不是说明,也不是语句,在行末不加分号。如果加上分号,则连分号也一起置换。 7. 宏定义必须写在函数的外面,其作用范围为从宏定义命令开始到当前源程序结束。 8. 如果对“输出格式”作宏定义,则可以减少书写麻烦。 8.1 技能1 【知识点】 1. 在C语言中允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用时,不仅宏展开,而且用实际参数去代换形式参数。 2. 带参宏定义的一般形式为: #define 宏名(形参表) 字符串 在字符串中含有各个形参。带参宏调用的一般形式为: 宏名(实参表); 8.1.2 带参数的宏定义 8.1 技能1 【典型例题】 例8.5 输入任意二个整数,输出最大值。 #define MAX(a,b) (ab)?a:b main() { int x,y,max; printf(请输入二个数); scanf(%d%d,x,y); max=MAX(x,y); printf(max=%d\n,max); } 8.1.2 带参数的宏定义 8.1 技能1 【典型例题】 例8.6 计算x+1的平方值。 #define SQ(y) (y)*(y) main() { int x,sq; printf(请输入一个数:); scanf(%d,x); sq=SQ(x+1); printf(sq=%d\n,sq); } 8.1.2 带参数的宏定义 8.1 技能1 【点拨】 1. 宏定义中的字符串内的形参通常要用括号括起来,以免出错。不但应该在参数的两侧加上括号,还应该在整个字符串外加括号。 2.在宏调用中的实参可以是表达式,而宏定义中的形参仅仅是标识符。 3. 在带参宏定义中,形参不分配内存单元,不必作类型定义。而宏调用中的实参有具体的值,要去代换形参,必须作类型说明。

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档