二级C语言程序设计及同步训练 -涂玉芬 第十章 编译预处理与位运算.pptVIP

二级C语言程序设计及同步训练 -涂玉芬 第十章 编译预处理与位运算.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 编译预处理与位运算 10.1 编译预处理 编译预处理:是在编译前由编译系统中的预处理程序对源程序的预处理命令进行加工。 源程序中的预处理命令均以“#”开头,命令末尾不加分号,它们可以写在程序中的任何位置,作用域是从出现位置开始到源程序的结束. 10.1.1 宏定义 宏定义是定义一个标识符来代替一个字符串。 宏定义有不带参数的宏定义和带参数的宏定义两种。 1.不带参数的宏定义 定义形式: #define 标识符 字符串 功能:用一个指定的标识符(即名字,称为宏名)来代表一个字符串。 例如:#define PI 3.1415926 说明:(1)与其他标识符相区别,宏名一般用大写字母表示。 (2)编译预处理时,将程序中的宏名用字符串代替,这种将宏名替换成字符串的过程称为“宏展开”。 (3)使用宏可以减少程序中重复书写或修改某些字符串的工作量. (4)在程序中出现在双引号中或其他字符串中与宏名相同的字符串,不能作为宏处理。 (5)#define命令的作用范围从定义位置至源程序结束,但可以用#undef终止其作用域。 10.1.1 宏定义 例1:#define PI 3.1415926 main() { float l,s,r; scanf(%d,r); l=2.0*PI*r; s=PI*r*r; printf(l=%f\n,l); printf(s=%f\n,s); } 10.1.1 宏定义 例2:#define PI 3.1415926 main() { … } #undef PI fun() { … } 10.1.1 宏定义 (6)宏定义时,可以引用已定义的宏名,编译时层层展开。 例3:#define PI 3.1415926 #define R 3.0 #define L 2*PI*R #define X R+L main() { … y=2*X; … } 10.1.1 宏定义 2.带参数的宏定义 定义形式: #define 标识符(参数表)字符串 功能:用指定的带参数的标识符来代表一个字符串。 注意:带参数的宏展开时要用实参字符串替换形参字符串。 例4:#define S(x) 2*x*x main() { … y=S(2+2); … } 10.1.2 文件包含 文件包含是一个源程序通过#include命令把另外一个文件的全部内容嵌入到源程序中。 文件包含命令有如下两种格式: #include文件名 #include文件名 功能:将指定文件的全部内容放到该命令行所在的位置。 说明:命令#include文件名在有哪些信誉好的足球投注网站文件时只检索C语言编译系统所确定的标准目录,而命令#include文件名在有哪些信誉好的足球投注网站文件时首先对使用包含文件的源程序文件所在的目录进行检索,若没有找到指定的文件,再在标准目录中检索。 10.2 位运算 数据在计算机内部是以二进制补码形式存储的。 1.按位与运算符: 若参与运算的两个操作数对应的两个二进制位都是1,则对应位结果为二进制位1,否则为0。 例1:求53的值。 运算过程如下: 0000 0000 0000 0101(5的补码) 0000 0000 0000 0011(3的补码) 0000 0000 0000 0001 (1的补码,即53=1) 10.2 位运算 2.按位或运算符:| 若参与运算的两个操作数对应的两个二进制位有一个为1,则对应位结果为二进制位1,否则为0。 例2:求5|3的值。 运算过程如下: 0000 0000 0000 0101(5的补码) | 0000 0000 0000 0011(3的补码) 0000 0000 0000 0111(7的补码,即5|3=7) 10.2 位运算 3.按位异或运算符:^ 若参与运算的两个操作数对应的两个二进制位相异(一个为1,另一个为0),则对应位结果为二进制位1,否则为0。 例3:求5^3的值。 运算过程如下: 0000 0000 0000 0101(5的补码) ^ 0000 0000 0000 0011(3的补码) 0000 0000 0000 0110(6的补码,即5^3=6) 10.2 位运算 4.按位取反运算符:~ “~”的操作数只有一个,若操作数的某二进制位为1,则对应位结果为0,若操作数的某二进制位为0,则对应位结果为1, 例4:求~5的值。 运算过程如下:

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档