C语言程序设计CPD04更多课件请进我文库.ppt

上传人:max****ui 文档编号:6333560 上传时间:2020-02-23 格式:PPT 页数:42 大小:814.31KB
返回 下载 相关 举报
C语言程序设计CPD04更多课件请进我文库.ppt_第1页
第1页 / 共42页
C语言程序设计CPD04更多课件请进我文库.ppt_第2页
第2页 / 共42页
C语言程序设计CPD04更多课件请进我文库.ppt_第3页
第3页 / 共42页
点击查看更多>>
资源描述
第4章数值类型 算术及位运算 北京工商大学计算机与信息工程学院何渝 计算机程序设计基础 2 本章主要内容 数据类型基本数据类型数学计算中的错误和不精确性数值数据类型的自动转换C 算术赋值表达式语句算术表达式类型位运算数学函数库 3 4 1数据类型 现实世界中的数据五花八门 各式各样 而计算机又有其自身的特点 因此 在计算机对数据一定要进行分门别类的划分 归类 然后再进行加工 处理和存储 数据类型就是对数据进行的一种分类 对不同类型数据进行的加工 处理和存储是不一样的 4 4 1数据类型介绍 4 1 1数据类型一组数据值和定义在这组数据值之上操作的集合 数据类型分为 1 内置型 包括基本类型和构造类型2 用户型 都是构造型 5 4 1 2基本数据类型 整型int基本整型int短整型short int 长整型long int 高长整型doublelong longdouble 注 a 上述几种类型又都分成 有符号整型 缺省 和无符号整型unsignedb 每种类型所占的存储空间会不一样 故表示的数值范围也不一样 见附件 6 2 浮点型float单精度float双精度double float 长双精度longdouble float 注 每种类型所在存储空间不一样 表示的数值范围也不一样 见附件 所占存储空间与表示的数值范围与计算机的类型和所用计算机语言及其版本有关系 使用时可查相关资料和帮助信息 7 3 字符型charactor有符号字符char 缺省无符号字符unsignedchar注1 一般情况一个字符类型变量占一个字节空间 注2 字符类型可以看作是整型类型的一个特例 它的取值也全是整数 只是范围要小些 4 void类型void类型表示不存在的值 C中没用此类型声明的变量 主要用于声明函数有无参数和返回值 8 C C 中的构造数据类型是由原有的数据类型进行组合而成的新类型 有内置的 也有用户根据需要自己创建的 如数组 结构体 枚举等类型 在后面的章节中将陆续一一详细介绍 4 1 3构造数据类型 9 4 2数学计算中的错误及不精确性 当用计算机来计算数学问题时 不可避免的要产生一些 错误 以及所谓的 不精确性 这些都是计算机的特性所决定 在进行编程时要特别注意 以后的课程中还会有更详细的介绍 因此在应用计算机计算数学问题时要特别加以注意 10 用0做除数2 整数除法3 结果上溢4 结果下溢5 表示错误 浮点数不能表示准确数 6 相约错误 较大数与较小数操作 11 C C 中对数值数据的转换有两种方式 1 自动转换 由系统自动转换2 强制转换 在数据前加上要转换类型 并用圆括号括起来 如 int 12 9第1种转换按数据的类型从 小 往 大 进行 其大小排列顺序为 4 3数值数据类型的转换 longdouble double float unsignedlongint signedlongint signedint signedshortint unsignedshortint signedchat unsignedchar 12 4 4算术运算 算术运算是指最基本的形如加 减 乘 除等初等数学运算 再加上一些特别定义的在计算机上可运行的最基本的运算 下面将进行这方面较详细的介绍 13 4 4 1算术运算符 加减乘除 整数 取余 自加自减 14 4 4 2运算符的优先级与结合性 为了符合数学及其它规定 对每一运算符都规定了其优先级与结合性 如对表达式3 1 2的运算中 运算符将先于 运算符 故其值为1 不是4 C C 中所有运算符的优先级及给与结合性的详细介绍参见教材或相关参考资料 15 4 4 3 与 运算符的注意事项 与 运算符可对变量进行左或右运算 如 inta 3 b a 与 a 的效果是一样的 a 与a 的效果也一样 但b a 与b a 就不一样 可自己上机试一试 16 4 5算术表达式 用算术运算符将运算对象连接起来的式子称为算术表达式 如 3 5a bx y 7每一算术表达式都有一 值 如3 5的值为数值8 而a b的值得看具体情况而定 17 4 6复合算术运算符 若一个表达式中包含了不止一个算术表达式 则称其为 复合算术表达式 如 3 8 9x 2 y 6 8这样每一表达式就进行了不止一个算术运算 最后每一个表达式也都有一个 值 对应 且注意其运算次序 18 4 7复合赋值运算符 将算术赋值运算符与其它一些算术运算符组合起来 就构成了新的运算符 称为复合赋值运算符 如 它们都进行两个运算 如表达式 x y等价于x x y其余类推 19 4 8算术表达式的类型 C C 中每个常量或变量都有固定类型 当不同类型的常量与变量进行运算时 以及运算结果也有一定的结果 它们都遵循一定的规则 为了需要 可以进行强制或自动的转换 20 4 9算术函数库 C C 编译器中只定义了几种最基本的算术运算 大量的其它数学运算被定义成函数 放在数学函数库中 用户不用再自己编写 直接调用即成 方便简捷可靠效率高 每种编译软件都会带有大量的各种各样的函数 可参考相关帮助与资料 注意使用时要在程序最前面加上相应的头文件 用如下形式 include或 include 头文件名 21 参看教材或参考书上的实例 在自己编写程序时注意 1 变量名 函数名等的取名规则2 程序书写格式3 库函数的调用4 帮助信息的利用 4 10位运算 4 10 1位运算概念计算机真正执行的全部是由0和1组成的数字机器指令 其中的数据也都是以二进制数表示的 因此 计算机真正实现的操作就是对这些0和1数字信号进行的操作 每一个0和1的状态称为一个 位 bit 状态 故需要对这些位进行不同的操作 运算 语言除了具有高级语言的各种功能外 还有一个重要特点就是具有某些低级语言的功能 这主要表现在 语言具有系统调用功能 如 对PC机BIOS中的例行程序int86 函数的调用 除此之外 语言还具有对其语言中的int和char类型数据的某些字节或位进行操作的能力 如按位取反 对数据的各位进行移位等 这通常都是低级语言的功能 这极大的增强了 语言的能力 倍受编程人员的欢迎 表4 1C语言位运算符一览表 位运算符含义 按位取反 右移 按位与 按位或 按位异或 表4 2C语言位运算符一览表 位运算符含义示例等价于 右移赋值a ba a b 按位与赋值a ba a b 按位或赋值a ba a b 按位异或赋值a ba a b 4 11位运算符的使用 4 11 1按位与运算符按位与运算符 需要两个运算量 作用是将两个运算量的各个位都分别对应进行 与 的运算 其规则为 10110000即 1 1得1 1 0得0 0 1得0 0 0得0 注意 这里0和1都是数据的某一 位 的值 且按位与运算只适合于整型 包括字符 数据类型 例4 1按位与运算 设 unsignedchara 173 b 203 c c a运算结果见下表 a 10101101 十进制数173 b 11001011 十进制数203 c 10001001 十进制数137 按位与的用途很多 例如当需要知道某一位的值是为0还是为1时 就可利用该运算 试考虑 当需要知道上例中变量a的第6位为何值时 如何办 4 11 2按位或运算符 按位或运算符 需要两个运算量 作用是将两个运算量的各个位都分别对应进行 或 的运算 其规则为 10111010即 1 1得1 1 0得1 0 1得1 0 0得0 同样 这里0和1都是数据的某一 位 的值 且按位或运算也只适合整型 包括字符 数据类型 例4 2按位或运算 设 unsignedchara 173 b 203 c c a b 运算结果见下表 a 10101101 十进制数173 b 11001011 十进制数203 c 11101111 十进制数239 按位或的用途也很多 例如当需要将某一位的值设置为1时 就可利用该运算 试考虑 需将上例中变量a的第6位设置为1时 其它位的值不变 如何办 4 11 3按位异或运算符 按位异或运算符 需要两个运算量 作用是将两个运算量的各个位都分别对应进行 异与 的运算 其规则为 10101010即 1 1得0 1 0得1 0 1得1 0 0得0 这里0和1都是数据的某一 位 的值 且异或位运算也只适合于整型 包括字符 数据类型 例4 3按位异或运算 设 unsignedchara 173 b 203 c c a b 运算结果见下表 a 10101101 十进制数173 b 11001011 十进制数203 c 01100110 十进制数102 按位异或的用途也很多 例如当需要将某一位的值进行翻转时 就可利用该运算 试考虑 需将上例中变量a的第6位的值进行翻转 其它位不变 如何办 例4 4将两个数交换 不用中间变量 设 inta 5 b 6 二进制分别为101和110 a 101 b 110a a b a 011 b 110b a b b 101 a 011a b a a 110即 b a b a b b a b b a 0 a b b 0 a b a a a b a a b 0 b b a a 0 4 11 4按位取反运算符 按位取反运算符 只需要一个运算量 作用是将这个运算量的各个位都分别对应进行 取反 的运算 其规则为 10101即 1得0 0得1 这里的0和1都是数据的某一 位 的值 且取反位运算也只适合于整型 包括字符 数据类型 例4 5按位取反运算 设 unsignedchara 173 b 203 c c a 运算结果见下表 a 10101101 十进制数173 c 01010010 十进制数82 按位取反的用途也很多 例如当需要将某一字节的所有值取反时 就可利用该运算 实际应用中 需要黑白显示或黑白打印时 若要进行黑白颠倒的操作时就可利用该运算 4 11 5左移运算符 左移运算符 的作用是将某个运算量的各个位全部都左移若干位 左移空出部分补0 设 unsignedchara 21 对其进行左移2位的运算 a 00010101 十进制数21 a 2 0001010100 十进制数84 移出补入0左移运算也只适合于整型 包括字符 数据类型 左移运算说明 1 左移运算中移动的位数不能超过运算变量的总位数 2 左移运算可能会发生溢出现象 如 a 10010101 十进制数149 a 2 1001010100 十进制数84 溢出补入03 左移1位相当于乘以2 左移2位相当于乘以4 此法用于乘法比用 运算快得多 4 11 6右移运算符 右移运算符 的作用是将某个运算量的各个位全部都右移若干位 左移空出部分补0 设 unsignedchara 149 对其进行右移2位的运算 a 10010101 十进制数149 a 2 0010010101 十进制数37 补入0丢失右移运算也只适合于整型 包括字符 数据类型 右移运算说明 1 右移运算中移动的位数不能超过运算变量的总位数 2 右移运算可能会发生溢出现象 见上例 3 右移1位相当于除以2 左移2位相当于除以4 用此法算除法比用 运算快得多 4 当右移无符号变量时 右移的左端补零 当右移有符号变量时 如果符号位为0 正数 由左边也是补入0 如果符号位为1 负数 则左边补入的全是1 这是为了保持数原来的符号并实现右移一位相当于除以2 这种补数的方法称为 算术右移 若是补0 则称为 逻辑右移 不同的 语言编译系统处理进可能不一样 要多加注意 例4 6将十六进制数转换为二进制数 main intj num bit unsignedintmask 0 x8000 scanf x 4 12位运算符应用举例 例4 7取一整数a从右端开始的4 7位main unsignedinta b c d scanf d 例4 8将数a循环移位 main unsignedinta b c intn scanf a d n d 42 第4章家庭作业 1 复习教材第2 3章内容2 做教材第2章后的习题 结合第3章习题一起做3 上机 教材上的例题和习题4 预习教材第4章
展开阅读全文
相关资源
相关搜索

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


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

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


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