第5讲编译预处理和位运算

上传人:sx****84 文档编号:243014298 上传时间:2024-09-13 格式:PPT 页数:24 大小:109.50KB
返回 下载 相关 举报
第5讲编译预处理和位运算_第1页
第1页 / 共24页
第5讲编译预处理和位运算_第2页
第2页 / 共24页
第5讲编译预处理和位运算_第3页
第3页 / 共24页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,5,讲编译预处理和位运算,一、编译预处理,1、宏定义,2、文件包含,二、位运算,1,、概念,:,用标识符来表示一个字符串,标识符叫宏名。,一、宏定义:,(P5),2,、无参宏定义,1,)无参宏定义的一般,格式,:,#define,标识符 字符串,例如:,#define PI 3.14159,2,)作用:,在宏定义之后,凡是该标识符出现的地方用对应的字符串来代替。,上面的定义之后,凡是,PI,都用,3.14159,来代替。,例,输入半径,计算以该半径为圆的周长与圆面积、球的体积与表面积。,#include ,#define PI 3.14159,void main( ),float r, yzc,ymj,qbmj,qtj;,scanf(%f,yzc=2*PI*r;,ymj=PI*r*r;,qbmj=4*PI*r*r;,qtj=4*PI*r*r*r/3;,printf(%f,%f,%f,%fn,yzc,ymj,qbmj,qtj);,3,、带参数的宏定义,(P8),1,)带参宏定义的一般,格式,:,#define,标识符,(,参数表,),字符串,例如:,#define ADD(x,y) x+y,2,)作用:,在宏定义之后,凡是该标识符出现的地方用对应的字符串来代替,参数也作相应的替换。,上面的定义之后,程序中如果出现,ADD(4,5),,则用,4+5,来代替,出现,ADD(a,b),,则用,a+b,来代替。,#include ,#define PI 3.14159,#define AREA(r) PI*r*r,void main( ), float x,s;,x=10.0;,s=AREA(x);,printf(s=%.1fn,s);,写出下面程序的结果。,执行结果:,s=314.2,#include ,#define ADD(x,y) x+y,#define MAX(x,y) xy?x:y,void main( ), int a=4,b=5,c,d;,c=ADD(a,b); d=MAX(a,b);,printf(c=%dtd=%dn,c,d);,float w,z;,w=ADD(5.6,-5.8); z=MAX(5.6,-5.8);,printf(w=%.1ftz=%.1fn,w,z);,写出下面程序的结果。,执行结果:,c=5 d=5,w=-0.2 z=5.6,写出下面程序的结果。,#include ,#define MUL(x,y) x*y,void main( ), int a=3,b=4,c=5,d=6,m1,m2;,m1=MUL(a,b);,m2=MUL(a+b,c+d);,printf(m1=%dn,m1);,printf(m2=%dn,m2);,执行结果:,m1=12,m2=29,修改方法,1,:,#include ,#define MUL(x,y),(x)*(y),void main( ), int a=3,b=4,c=5,d=6,m1,m2;,m1=MUL( a , b );,m2=MUL( a+b , c+d );,printf(m1=%dn,m1);,printf(m2=%dn,m2);,执行结果:,m1=12,m2=77,修改方法,2,:,#include ,#define MUL(x,y) x*y,void main( ), int a=3,b=4,c=5,d=6,m1,m2;,m1=MUL(a,b);,m2=MUL(,(a+b) , (c+d),);,printf(m1=%dn,m1);,printf(m2=%dn,m2);,执行结果:,m1=12,m2=77,1,、 文件包含是,C,语言的一个重要功能,其作用是将另外一个文件的内容包含进来。,C,语言使用,#include,来实现,命令格式:,#include ,文件名,#include ,二、文件包含,(P10),例如:,#include stdio.h,#include ,2,、文件包含通常用来解决程序使用,C,的库函数和公共符号常量的问题。例如:,sqrt(),函数、,EOF,。,3,、 两种格式的区别,#include “,文件名,”,表示先在源程序文件的当前目录下查找文件,如果当前目录下未找到文件再到包含目录下查找。,#include ,表示只在包含目录下查找。,包含目录是编译系统的一个参数,,在,VC 6.0,下通过“工具”菜单中的“选项”、“目录”来查询与设置,而在,DEV C+,下通过“工具”菜单中的“编译选项”、“目录”、“,C,包含文件”来查询与设置。,二、位运算,(P44),位是指二进制数中的一位,其值为,0,或者,1,。 位运算包括,与、或、非、异或、左移、右移,。,参与位运算的两个操作数必须是,字符型,或者,整型,,,不能是实数,。如果是操作数是负数,则用操作数的,补码形式,参与运算;如果是操作数是字符,则用操作数的,ASCII,码,参与运算。,在进行位运算时,最好把二个数化成二进制,然后根据位运算的运算规则进行计算。,每个位运算的规则是不变的,但计算结果可能与参与计算的,操作数的位数有关,。,1,、按位与运算,&,#include ,void main(),char a=3,b=50;,printf(a,程序执行结果:,a&b=2,例,1,写出下面程序的执行结果。,0000 0011=3,& 0011 0010=50,0000 0010=2,规则:二个为,1,才为,1,,否则为,0,。,#include ,void main(),char,a=-3,b=50,;,printf(a,程序执行结果:,a&b=48,例,2,写出下面程序的执行结果。,1111 1101=-3,& 0011 0010=50,0011 0000=48,2,、按位或运算,|,#include ,void main(),char a=3,b=50;,printf(a,|,b=%dn,a,|,b);,程序执行结果:,a|b=51,例,1,写出下面程序的执行结果。,0000 0011=3,| 0011 0010=50,0011 0011=51,规则:二个为,0,才为,0,,否则为,1,。,#include ,void main(),char,a=-3,b=50,;,printf(a,|,b=%dn,a,|,b);,程序执行结果:,a|b=-1,例,2,写出下面程序的执行结果。,1111 1101=-3,| 0011 0010=50,1111 1111=-1,3,、按位异或运算,#include ,void main(),char a=3,b=50;,printf(a,b=%dn,a,b);,程序执行结果:,ab=49,例,1,写出下面程序的执行结果。,0000 0011=3, 0011 0010=50,0011 0001=49,规则:相同为,0,,相异为,1,。,#include ,void main(),char,a=-3,b=50,;,printf(a,b=%dn,a,b);,程序执行结果:,ab=-49,例,2,写出下面程序的执行结果。,1111 1101=-3, 0011 0010=50,1100 1111=-49,4,、按位非运算,#include ,void main(),char a=3;,printf(,a=%dn,a);,程序执行结果:,a=-4,例,1,写出下面程序的执行结果。, 0000 0011=3,1111 1100=-4,规则:,0,变成,1,,,1,变成,0,。,#include ,void main(),char a=,-,3;,printf(,a=%dn,a);,程序执行结果:,a=2,例,2,写出下面程序的执行结果。, 1111 1101=-3,0000 0010=2,5,、左移运算,#include ,void main(),char a=3;,printf(a,2,=%dn, a,2,);,程序执行结果:,a2=12,例,1,写出下面程序的执行结果。,规则:符号位参与移位,左边移出的位丢弃,右边补,0,。,#include ,void main(),char a=,-,3;,printf(a,3,=%dn, a,3,);,程序执行结果:,a,#include ,void main(),char a=,24,;,printf(,a2,=%dn, a,2,);,程序执行结果:,a2=6,例,1,写出下面程序的执行结果。,规则:符号位,不,参与移位,右边移出的位丢弃。,#include ,void main(),int,a=-50,b=127,;,printf(a2=%dn,a2);,printf(b2=%dn,b2);,程序执行结果:,a2=-13,b2=31,例,2,写出下面程序的执行结果。,规律:每右移,1,位相当于整除,2,。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!