电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

第十章 编译预处理与位运算VIP免费

第十章  编译预处理与位运算_第1页
1/20
第十章  编译预处理与位运算_第2页
2/20
第十章  编译预处理与位运算_第3页
3/20
第10章编译预处理与位运算10.1编译预处理编译预处理:是在编译前由编译系统中的预处理程序对源程序的预处理命令进行加工。源程序中的预处理命令均以“#”开头,命令末尾不加分号,它们可以写在程序中的任何位置,作用域是从出现位置开始到源程序的结束.10.1.1宏定义宏定义是定义一个标识符来代替一个字符串。宏定义有不带参数的宏定义和带参数的宏定义两种。1.不带参数的宏定义定义形式:#define标识符字符串功能:用一个指定的标识符(即名字,称为宏名)来代表一个字符串。例如:#definePI3.1415926说明:(1)与其他标识符相区别,宏名一般用大写字母表示。(2)编译预处理时,将程序中的宏名用字符串代替,这种将宏名替换成字符串的过程称为“宏展开”。(3)使用宏可以减少程序中重复书写或修改某些字符串的工作量.(4)在程序中出现在双引号中或其他字符串中与宏名相同的字符串,不能作为宏处理。(5)#define命令的作用范围从定义位置至源程序结束,但可以用#undef终止其作用域。例1:#definePI3.1415926main(){floatl,s,r;scanf("%d",&r);l=2.0*PI*r;s=PI*r*r;printf("l=%f\n",l);printf("s=%f\n",s);}main(){floatl,s,r;scanf("%d",&r);l=2.0*3.1415926*r;s=3.1415926*r*r;printf("l=%f\n",l);printf("s=%f\n",s);}展开10.1.1宏定义例2:#definePI3.1415926main(){…}#undefPIfun(){…}10.1.1宏定义10.1.1宏定义(6)宏定义时,可以引用已定义的宏名,编译时层层展开。例3:#definePI3.1415926#defineR3.0#defineL2*PI*R#defineXR+Lmain(){…y=2*X;…}main(){…y=2*3.0+2*3.1415926*3.0;…}展开(7)宏名是一个常量标识符,不是变量,不分配内存空间。2.带参数的宏定义定义形式:#define标识符(参数表)字符串功能:用指定的带参数的标识符来代表一个字符串。注意:带参数的宏展开时要用实参字符串替换形参字符串。例4:#defineS(x)2*x*xmain(){…y=S(2+2);…}main(){…y=2*2+2*2+2;…}展开注意:展开时用实参字符串2+2替换形参字符串x,2+2是字符串,不能看做表达式,即S不能展开为2*(2+2)*(2+2)。10.1.1宏定义10.1.2文件包含文件包含是一个源程序通过#include命令把另外一个文件的全部内容嵌入到源程序中。文件包含命令有如下两种格式:#include<文件名>#include"文件名"功能:将指定文件的全部内容放到该命令行所在的位置。说明:命令#include<文件名>在搜索文件时只检索C语言编译系统所确定的标准目录,而命令#include"文件名"在搜索文件时首先对使用包含文件的源程序文件所在的目录进行检索,若没有找到指定的文件,再在标准目录中检索。10.2位运算数据在计算机内部是以二进制补码形式存储的。1.按位与运算符:&若参与运算的两个操作数对应的两个二进制位都是1,则对应位结果为二进制位1,否则为0。例1:求5&3的值。运算过程如下:0000000000000101(5的补码)&0000000000000011(3的补码)0000000000000001(1的补码,即5&3=1)2.按位或运算符:|若参与运算的两个操作数对应的两个二进制位有一个为1,则对应位结果为二进制位1,否则为0。例2:求5|3的值。运算过程如下:0000000000000101(5的补码)|0000000000000011(3的补码)0000000000000111(7的补码,即5|3=7)10.2位运算3.按位异或运算符:^若参与运算的两个操作数对应的两个二进制位相异(一个为1,另一个为0),则对应位结果为二进制位1,否则为0。例3:求5^3的值。运算过程如下:0000000000000101(5的补码)^0000000000000011(3的补码)0000000000000110(6的补码,即5^3=6)10.2位运算4.按位取反运算符:~“~”的操作数只有一个,若操作数的某二进制位为1,则对应位结果为0,若操作数的某二进制位为0,则对应位结果为1,例4:求~5的值。运算过程如下:~0000000000000101(5的补码)1111111111111010(-6的补码,即~5=-6)10.2位运算5.左移运算符:<<左移运算的一般形式为:操作数<<移位位数功能:将一个操作数的所有二进制位依次左移若干位,高位移出并舍弃,低位补0。例5:求5<<3的值。运算过程如下:0000000000000101(5的补码)<<30000000000000101000(40的补码,即5<<3=40)10.2位运算6.右...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

第十章 编译预处理与位运算

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部