




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第4 4章章 数值类型、数值类型、 算术及位运算算术及位运算 北京工商大学北京工商大学 计算机与信息工程学院计算机与信息工程学院 何何 渝渝 计算机程序设计基础 计算机程序设计基础北京工商大学 何渝 2 本章主要内容 数据类型 基本数据类型 数学计算中的错误和不精确性 数值数据类型的自动转换 C+算术赋值表达式语句 算术表达式类型 位运算 数学函数库 计算机程序设计基础北京工商大学 何渝 3 4.1 数据类型 现实世界中的数据五花八门,各式 各样,而计算机又有其自身的特点。因 此,在计算机对数据一定要进行分门别 类的划分、归类,然后再进行加工、处 理和存储。数据类型就是对数据进行的 一种分类,对不同类型数据进行的加工 、处理和存储是不一样的! 计算机程序设计基础北京工商大学 何渝 4 4.1 数据类型介绍 4.1.1 数据类型 一组数据值和定义在这组数据值之上 操作的集合。 数据类型分为: 1.内置型,包括基本类型和构造类型 2.用户型,都是构造型 计算机程序设计基础北京工商大学 何渝 5 4.1.2 基本数据类型 1.整型 int 基本整型 int 短整型 short int 长整型 long int 高长整型 double long (long double) 注:a.上述几种类型又都分成:有符号整型(缺 省)和无符号整型 unsigned b.每种类型所占的存储空间会不一样,故 表示的数值范围也不一样(见附件)! 计算机程序设计基础北京工商大学 何渝 6 2. 2. 浮点型 float 单精度 float 双精度 double float 长双精度 long double float 注: 每种类型所在存储空间不一样,表示的数值 范围也不一样(见附件) !所占存储空间与表示的 数值范围与计算机的类型和所用计算机语言及其 版本有关系,使用时可查相关资料和帮助信息! 计算机程序设计基础北京工商大学 何渝 7 3. 字符型 charactor 有符号字符 char /缺省 无符号字符 unsigned char 注1:一般情况一个字符类型变量占一个字节空 间! 注2:字符类型可以看作是整型类型的一个特例 ,它的取值也全是整数,只是范围要小些! 4. void类型 void类型表示不存在的值,C中没用此类型声明 的变量,主要用于声明函数有无参数和返回值 。 计算机程序设计基础北京工商大学 何渝 8 C/C+ C/C+中的构造数据类型是由原有的数中的构造数据类型是由原有的数 据类型进行组合而成的新类型,有内置的,据类型进行组合而成的新类型,有内置的, 也有用户根据需要自己创建的!如数组、结也有用户根据需要自己创建的!如数组、结 构体、枚举等类型,在后面的章节中将陆续构体、枚举等类型,在后面的章节中将陆续 一一详细介绍!一一详细介绍! 4.1.3 构造数据类型 计算机程序设计基础北京工商大学 何渝 9 4.4.2 数学计算中的错误及不精确性 当用计算机来计算数学问题时,不可 避免的要产生一些“错误”,以及所谓的“不 精确性”,这些都是计算机的特性所决定, 在进行编程时要特别注意,以后的课程中 还会有更详细的介绍,因此在应用计算机 计算数学问题时要特别加以注意! 计算机程序设计基础北京工商大学 何渝 10 1. 用0做除数 2. 整数除法 3. 结果上溢 4. 结果下溢 5. 表示错误(浮点数不能表示准确数 ) 6. 相约错误(较大数与较小数操作) 计算机程序设计基础北京工商大学 何渝 11 C/C+中对数值数据的转换有两种方式: 1. 自动转换,由系统自动转换 2. 强制转换,在数据前加上要转换类型,并用 圆括号括起来,如:(int)12.9 第1种转换按数据的类型从“小”往“大”进行, 其大小排列顺序为: 4.3 数值数据类型的转换 long doubledouble float unsigned long int signed long int signed int, signed short int, unsigned short int signed chat, unsigned char 计算机程序设计基础北京工商大学 何渝 12 4.4 算术运算 算术运算是指最基本的形如 加、减、乘、除等初等数学运算 ,再加上一些特别定义的在计算 机上可运行的最基本的运算,下 面将进行这方面较详细的介绍。 计算机程序设计基础北京工商大学 何渝 13 4.4.1 算术运算符 + - * / 加减乘除 % (整数)取余 + - 自加自减 计算机程序设计基础北京工商大学 何渝 14 4.4.2 运算符的优先级与结合性 为了符合数学及其它规定,对每一 运算符都规定了其优先级与结合性,如 对表达式 3-1*2 的运算中,*运算符将 先于-运算符,故其值为1,不是4! C/C+中所有运算符的优先级及给 与结合性的详细介绍参见教材或相关参 考资料! 计算机程序设计基础北京工商大学 何渝 15 4.4.3 +与-运算符的注意事项 +与-运算符可对变量进行左或右 运算,如: int a=3, b; a+; 与 +a; 的效果是一样的;a-; 与 a-; 的效果也一样。 但 b=a+; 与 b=+a; 就不一样,可 自己上机试一试! 计算机程序设计基础北京工商大学 何渝 16 4.5 算术表达式 用算术运算符将运算对象连接 起来的式子称为算术表达式,如: 3+5 a-b x+ y/7 每一算术表达式都有一“值”!如3+5 的值为数值8,而a-b的值得看具体 情况而定! 计算机程序设计基础北京工商大学 何渝 17 4.6 复合算术运算符 若一个表达式中包含了不止一个 算术表达式,则称其为“复合算术表达 式”,如: 3+8-9 x-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中的例行程序int 86( )函数的调用; 除此之外,语言还具有对其语言中的int和char 类型数据的某些字节或位进行操作的能力,如按 位取反、对数据的各位进行移位等。这通常都是 低级语言的功能,这极大的增强了语言的能力。 倍受编程人员的欢迎。 计算机程序设计基础北京工商大学 何渝 表 4.1 C语言位运算符一览表 位运算符 含 义 按位取反 右移 unsigned char a=173, b=203, c; c=ac=a 运算结果见下表:运算结果见下表: a = 1 0 1 0 1 1 0 1 (a = 1 0 1 0 1 1 0 1 (十进制数十进制数173173) ) unsigned char a=173, b=203, c; c=a|b;c=a|b; 运算结果见下表:运算结果见下表: a = 1 0 1 0 1 1 0 1 (a = 1 0 1 0 1 1 0 1 (十进制数十进制数173173) ) | | b = 1 1 0 0 1 0 1 1 ( b = 1 1 0 0 1 0 1 1 (十进制数十进制数203203) ) c c = 1 = 1 1 1 0 1 1 1 1 (1 1 0 1 1 1 1 (十进制数十进制数239239) ) 按位或的用途也很多,例如当需要将某一位的值按位或的用途也很多,例如当需要将某一位的值 设置为设置为1 1时,就可利用该运算。试考虑:需将上例中变时,就可利用该运算。试考虑:需将上例中变 量量a a的第的第6 6位设置为位设置为1 1时,其它位的值不变,如何办?时,其它位的值不变,如何办? 4.11.3 4.11.3 按位异或运算符按位异或运算符 按位异或运算符按位异或运算符“ “”需要两个运算量,作用是将需要两个运算量,作用是将 两个运算量的各个位都分别对应进行两个运算量的各个位都分别对应进行“ “异与异与” ”的运算,的运算, 其规则为:其规则为: 1 0 1 0 1 0 11 0 1 0 1 0 0 1 0 即,即,1111得得0 0, 1010得得1 1, 0101得得1 1, 0000得得0 0。 这里这里0 0和和1 1都是数据的某一都是数据的某一“ “位位” ”的值,且异或位运的值,且异或位运 算也只适合于整型(包括字符)数据类型。算也只适合于整型(包括字符)数据类型。 例例4.3 4.3 按位异或运算按位异或运算 设:设: unsigned char a=173, b=203, c;unsigned char a=173, b=203, c; c=ab;c=ab; 运算结果见下表:运算结果见下表: a = 1 0 1 0 1 1 0 1 (a = 1 0 1 0 1 1 0 1 (十进制数十进制数173173) ) b = 1 1 0 0 1 0 1 1 ( b = 1 1 0 0 1 0 1 1 (十进制数十进制数203203) ) c = 0 1 1 0 0 1 1 0 (c = 0 1 1 0 0 1 1 0 (十进制数十进制数102102) ) 按位异或的用途也很多,例如当需要将某一位按位异或的用途也很多,例如当需要将某一位 的值进行翻转时,就可利用该运算。试考虑:需将上的值进行翻转时,就可利用该运算。试考虑:需将上 例中变量例中变量a a的第的第6 6位的值进行翻转,其它位不变,如何位的值进行翻转,其它位不变,如何 办?办? 例例4.4 4.4 将两个数交换,不用中间变量将两个数交换,不用中间变量 设:设: int a=5, b=6; int a=5, b=6; /* /* 二进制分别为二进制分别为101101和和110 */110 */ a a = 1 0 1= 1 0 1 b = 1 1 0 b = 1 1 0 a=aba=ab; a = 0 1 1; a = 0 1 1 b = 1 1 0b = 1 1 0 b=ab; b=ab; b = 1 0 1b = 1 0 1 a = 0 1 1a = 0 1 1 a=ba; a=ba; a = 1 1 0 a = 1 1 0 即:即: b=ab=(ab)b=a(bb)=b=ab=(ab)b=a(bb)=a0=a / bb=0a0=a / bb=0 a=ba=a(ab)=(aa)a=ba=a(ab)=(aa)b=0b=b / aa=0 b=0b=b / aa=0 4.11.4 4.11.4 按位取反运算符按位取反运算符 按位取反运算符按位取反运算符“ “”只需要一个运算量,作用只需要一个运算量,作用 是将这个运算量的各个位都分别对应进行是将这个运算量的各个位都分别对应进行“ “取反取反” ”的的 运算,其规则为:运算,其规则为: 1 0 1 0 1 1 0 10 1 即,即,11得得0 0, 00得得1 1。 这里这里的的0 0和和1 1都是数据的某一都是数据的某一“ “位位” ”的值,且取反的值,且取反 位运算也只适合于位运算也只适合于整型整型( (包括字符包括字符) )数据类型数据类型。 例例4.5 4.5 按位取反运算按位取反运算 设:设: unsigned char a = 173, b = 203, c;unsigned char a = 173, b = 203, c; c = a;c = a; 运算结果见下表:运算结果见下表: a = 1 0 1 0 1 1 0 1 ( a = 1 0 1 0 1 1 0 1 (十进制数十进制数173173) ) c c = 0 1 0 1 0 0 1 0 (= 0 1 0 1 0 0 1 0 (十进制数十进制数8282) ) 按位取反的用途也很多,例如当需要将某一字按位取反的用途也很多,例如当需要将某一字 节的所有值取反时,就可利用该运算。实际应用中,节的所有值取反时,就可利用该运算。实际应用中, 需要黑白显示或黑白打印时,若要进行黑白颠倒的操需要黑白显示或黑白打印时,若要进行黑白颠倒的操 作时就可利用该运算。作时就可利用该运算。 4.11.5 4.11.5 左移运算符左移运算符 左移运算符左移运算符“ “”的作用是将某个运算量的各个位的作用是将某个运算量的各个位 全部都右移若干位,左移空出部分补全部都右移若干位,左移空出部分补0 0 。设:。设: unsigned char a=149unsigned char a=149,对其进行右移,对其进行右移2 2位的运算:位的运算: a = 1 0 0 1 0 1 0 a = 1 0 0 1 0 1 0 1 1 ( (十进制数十进制数149149) ) a a2 = 0 0 1 0 0 1 0 1 0 2 = 0 0 1 0 0 1 0 1 0 1 1 ( (十进制数十进制数3737) ) 补补入入 0 0 丢失丢失 右移右移运算也只适合于运算也只适合于整型整型( (包括字符包括字符) )数据类型数据类型。 右移运算说明:右移运算说明: 1 1. . 右移运算中移动的位数不能超过运算变量的右移运算中移动的位数不能超过运算变量的 总位数。总位数。 2 2. . 右移运算可能会发生溢出现象,见上例。右移运算可能会发生溢出现象,见上例。 3 3. . 右移右移1 1位相当于除以位相当于除以2 2,左移,左移2 2位相当于除以位相当于除以4 4, ,用此法算除法比用,用此法算除法比用“ “/”/”运算快得多。运算快得多。 4 4. . 当右移无符号变量时,右移的左端补零;当右当右移无符号变量时,右移的左端补零;当右 移有符号变量时,如果符号位为移有符号变量时,如果符号位为0(0(正数正数) ),由左边也是,由左边也是 补入补入0 0,如果符号位为,如果符号位为1(1(负数负数) ),则左边补入的全是,则左边补入的全是1 1, 这是为了保持数原来的符号并实现右移一位相当于除这是为了保持数原来的符号并实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业企业合同范本
- 改造修建别墅合同范本
- 调岗空白合同范本
- 社保合同范本
- 展板横幅制作合同范本
- 简易沙石供货合同范本
- 2025年-河南省建筑安全员考试题库及答案
- 公寓灯具维修合同范本
- 农田无偿代耕代种合同标准文本
- 关于装饰公司合同样本
- 高等数学上册ppt课件完整版
- 应用型人才核心素养总体框架(模板)
- 新时期当好社会组织秘书长的若干思考课件
- 太阳能电池的特性完整课件
- 4D现场管理培训ppt课件(PPT 45页)
- 企业公司组织架构图word模板
- 军队经济适用住房建设管理办法
- 全州朝鲜族小学校小班化教育实施方案
- pep小学英语四年级下课文及翻译
- 四川工程竣工验收备案表
- 2021北京四中新初一分班英语试题(1)
评论
0/150
提交评论