编译预处理和位运算.ppt

上传人:牧羊曲112 文档编号:6599869 上传时间:2023-11-16 格式:PPT 页数:24 大小:345.14KB
返回 下载 相关 举报
编译预处理和位运算.ppt_第1页
第1页 / 共24页
编译预处理和位运算.ppt_第2页
第2页 / 共24页
编译预处理和位运算.ppt_第3页
第3页 / 共24页
编译预处理和位运算.ppt_第4页
第4页 / 共24页
编译预处理和位运算.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《编译预处理和位运算.ppt》由会员分享,可在线阅读,更多相关《编译预处理和位运算.ppt(24页珍藏版)》请在三一办公上搜索。

1、第5讲编译预处理和位运算,一、编译预处理 1、宏定义 2、文件包含 二、位运算,1、概念:用标识符来表示一个字符串,标识符叫宏名。,一、宏定义:(P5),2、无参宏定义 1)无参宏定义的一般格式:#define 标识符 字符串 例如:#define PI 3.14159,2)作用:在宏定义之后,凡是该标识符出现的地方用对应的字符串来代替。上面的定义之后,凡是PI都用3.14159来代替。,例 输入半径,计算以该半径为圆的周长与圆面积、球的体积与表面积。,#include#define PI 3.14159void main()float r,yzc,ymj,qbmj,qtj;scanf(%f,

2、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*rvoid main()float x,s;x=10.0;s=AREA(x);printf(s=%.1fn,s);,写出下面程序的结果。,执行结果:s=314.2,

3、#include#define ADD(x,y)x+y#define MAX(x,y)xy?x:yvoid 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=5w=-0.2 z=5.6,写出下面程序的结果。,#include#define MUL(x,y)x*yvoid main()int a=3,b=4,c=5,d=6,m1,m

4、2;m1=MUL(a,b);m2=MUL(a+b,c+d);printf(m1=%dn,m1);printf(m2=%dn,m2);,执行结果:m1=12m2=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=12m2=77,修改方法2:,#include#define MUL(x,y)x*yvoid main()int a=3,b=4,c=5,

5、d=6,m1,m2;m1=MUL(a,b);m2=MUL(a+b),(c+d);printf(m1=%dn,m1);printf(m2=%dn,m2);,执行结果:m1=12m2=77,1、文件包含是C语言的一个重要功能,其作用是将另外一个文件的内容包含进来。C语言使用#include来实现,命令格式:#include 文件名#include,二、文件包含(P10),例如:#include stdio.h#include,2、文件包含通常用来解决程序使用C的库函数和公共符号常量的问题。例如:sqrt()函数、EOF。,3、两种格式的区别#include“文件名”表示先在源程序文件的当前目录下查

6、找文件,如果当前目录下未找到文件再到包含目录下查找。#include 表示只在包含目录下查找。,包含目录是编译系统的一个参数,在VC 6.0下通过“工具”菜单中的“选项”、“目录”来查询与设置,而在DEV C+下通过“工具”菜单中的“编译选项”、“目录”、“C包含文件”来查询与设置。,二、位运算(P44),位是指二进制数中的一位,其值为0或者1。位运算包括与、或、非、异或、左移、右移。,参与位运算的两个操作数必须是字符型或者整型,不能是实数。如果是操作数是负数,则用操作数的补码形式参与运算;如果是操作数是字符,则用操作数的ASCII码参与运算。,在进行位运算时,最好把二个数化成二进制,然后根据

7、位运算的运算规则进行计算。每个位运算的规则是不变的,但计算结果可能与参与计算的操作数的位数有关。,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、按

8、位或运算|,#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()

9、char a=3,b=50;printf(ab=%dn,ab);,程序执行结果:ab=49,例1 写出下面程序的执行结果。,0000 0011=3 0011 0010=50 0011 0001=49,规则:相同为0,相异为1。,#include void main()char a=-3,b=50;printf(ab=%dn,ab);,程序执行结果:ab=-49,例2 写出下面程序的执行结果。,1111 1101=-3 0011 0010=50 1100 1111=-49,4、按位非运算,#include void main()char a=3;printf(a=%dn,a);,程序执行结果:a

10、=-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(a2=%dn,a2);,程序执行结果:a2=12,例1 写出下面程序的执行结果。,规则:符号位参与移位,左边移出的位丢弃,右边补0。,#include void main()char a=-3;printf(a3=%dn,a3);,程序执行结果:a2=-24,例2 写出下面程序的执行结果。,规律:每左移1位相当于乘2。,6、右移运算,#include void main()char a=24;printf(a2=%dn,a2);,程序执行结果: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。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号