C语言第2章类型、运算符与表达式(2.12.3).ppt_第1页
C语言第2章类型、运算符与表达式(2.12.3).ppt_第2页
C语言第2章类型、运算符与表达式(2.12.3).ppt_第3页
C语言第2章类型、运算符与表达式(2.12.3).ppt_第4页
C语言第2章类型、运算符与表达式(2.12.3).ppt_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章 数据类型、运算符和表达式 主要内容 2.1 预备知识 2.2 常量和变量的概念 2.3 各种数据类型的常量及变量 2.4 变量赋初值 2.5 不同类型数据之间的混合运算 2.6 常用运算符和表达式 2.7 输入函数与输出函数 2 2.1 预备知识 l1、进制以及进制之间的 转换 l2、数据在计算机中的存 储方式 3 1、进制以及进制之间的转换 l计算机中数的表示及进制转换 数码、基与权 数码:表示数的符 号 基:数码的个数( 即进制的名称) 权:每一位所具有 的值 数制 4 进制 基 权 表示 数码 特点 ,10,10,10 十进制数 09 10 逢十进一 二进制数 01 2 ,2, 2, 2 逢二进一 八进制数 07 8 ,8, 8, 8 逢八进一 十六进制数 09,AF,af 16 ,16, 16, 16 逢十六进一 十进制:4956= 410+910 +510+610 二进制:1011=12+02 +12+12 十六进制:81AE=816+116 +1016+1416八进制:4275=48+28 +78+58 八进制:4275=48+28 +78+58 十六进制:81AE=816+116 +1016+1416 二进制:1011=12+02 +12+12 十进制:4956= 410+910 +510+610 5 十进制二进制八进制十六进制 0000 1111 21022 31133 410044 510155 611066 711177 81000108 91001119 6 十进制二进制八进制十六进制 10101012A 11101113B 12110014C 13110115D 14111016E 15111117F 1610000201018100102212 19100112313 7 一、二进制数的逻辑运算 计算机中的逻辑关系是一种二值逻辑,逻辑 运算的结果只有“真”或“假”两个值。 二值逻辑很容易用二进制的0和1来表示,一般 用1 1表示真表示真,用0表示假。 8 与 或 非 表示方式 逻辑代数的三种基本逻辑关系 AND、 OR、 非A写成 9 (1)与运算 与运算又称逻辑乘,通常用或表示。 运算规则为按位进行“与”运算,若进行“与” 操作的两位均为1,则结果为1;两位中有一 位为0,则结果为0。具体规则如下: 00=0 01=0 10=0 11=1 10 (2)或运算 或运算又称逻辑加,通常用或+表示 。运算规则是按位进行“或”运算,若进行“ 或”操作的两位中有一位为1,则结果为1; 两位均为0,则结果为0。具体规则如下: 00=0 01=1 10=1 11=1 11 (3)非运算 非运算实现对单个逻辑值的处理 ,也称为逻辑取反操作,通常用表示 。运算规则如下: 12 二、数制间的转换 十进制数非十进制数 非十进制数十进制数 二、八、十六进制之间的转换 13 余数法:除基数取余数、由下而上排列。 十进制 八进制 十进制整数 非十进制整数 示例1: 8 75 3 8 9 1 8 1 1 0 结果为:113O 14 进位法:用十进制小数乘基数,当积为0或达到 所要求的精度时,将整数部分由上而下排列。 十进制小数 非十进制小数 结果为:0.101B 示例: 0.625 2 1.250 整数为1 2 0.50 整数为0 2 1.0 整数为1 小数值为0 15 十进制转换成非十进制 u 对于十进制转化为 r 进制 u 整数部分: u 小数部分: 除 r 取余,直到商为0 ;先取的余数在低位,后取的余数在高 位。 乘 r 取整,直到值为0或 达到精度要求。先取的整数在高位 ,后取的整数在低位。 16 12 例:十进制25.13转换成二进制 先将整数部分 25转换为二进制 25 6 3 1 2 2 2 2 1 0 0 1 12 0 收 集 得到: 11001 B 17 将0.13转换为二进制,精确到后4位。 0.13*2=0.26 0.26*2=0.52 0.52*2=1.04 0.04*2=0.08 收 集 0 0 1 0 收 集 得到:0.0010 B 18 所以: (25)10 = (11001)2 (0.13)10 = (0.0010)2 (25.13)10 = (11001.0010)2 19 例:把(111011)2 ,(136)8 ,(1F2A)16转换为 十进制数。 二进制、八进制、十六进制转换成十进制 l方法:按位权相加 20 例:把(111011)2 ,(136)8 ,(1F2A)16转换为十进制数。 21 二进制 十六进制 二进制 八进制 二、八、十六进制之间的转换 一位拆三位 一位拆四位 整数从右向左 小数从左向右 三位并一位 四位并一位 22 二进制转换为八进制或十六进制 整数部分: 从低位向高位每3位(八进制)/4位(十六进制) 为一 组,高位不足的补0凑足3位 / 4位,然后每组分别 按权展开; 小数部分: 从高位向低位每3位(八进制)/4位(十六进制) 为一 组,低位不足的补0凑足3位 / 4位,然后每组分别 按权展开。 23 10 110 110 111 . 010 1 ( 2 6 6 7 . 2 4 )8 101 1011 0111.0101 ( 5 B 7 . 5 )16 示例: 10110110111.0101 00 为八进制进 制 二进制转换 为十六进制 二进制转换 0 0 24 2、计算机中数据的存储方式-字节和位 l内存以字节为单元组成 l每个字节有一个地址 l一个字节一般由8个二进制位组成 l每个二进位的值是0或1 01234567 0 1 2 3 4 5 6 7 8 9 10 . 25 数值(整型)的表示方法原码、反码和补码 u 原码: l最高位为符号位,其余各位为数值本身的绝 对值 u 反码: l正数:反码与原码相同 l负数:符号位为1,其余位对原码取反 u 补码: l正数:原码、反码、补码相同 l负数:最高位为1,其余位为原码取反;再对 整个数加1 26 原码 +7原= 0 0000111 B - 7原= 1 0000111 B 反码 +7反= 0 0000111 B -7反= 1 1111000 B 27 补码 +7补= 0 0000111 B -7补= 1 1111001 B 正数:原码、反码、补码相同 负数:最高位为1,其余位为原码取反;再对整个 数加1 28 原码反码补码 +7000001110000011100000111 -7100001111111100011111001 +0000000000000000000000000 -0100000001111111100000000 数的范围 01111111 11111111 (-127+127) 01111111 10000000 (-127+127) 01111111 10000000 (-128+127) (用一字节表示数) 29 补码在微型机中是一种重要的编码形式, 请注意: 1、 采用补码后,可以方便地将减法运算转化 成加法运算,运算过程得到简化。 2、 与原码、反码不同,数值0的补码只有一个 ,即 0补=00000000B。 3、若字长为8位,则补码所表示的范围为-128 +127;进行补码运算时,应注意所得结果不 应超过补码所能表示数的范围。 30 练一练: 1、十进制数 -29,写出它的原码,反码,补码? 2、十进制数 -15,写出它的原码,反码,补码? 原码: u最高位为符号位,其余各位为数值本身的绝对值 反码: u正数:反码与原码相同 u负数:符号位为1,其余位对原码取反 补码: u正数:原码、反码、补码相同 u负数:最高位为1,其余位为原码取反;再对整个 数加1 31 原码、反码、补码之间的转换 对于正数都一样,故不需要转换。 对于负数 u 反码原码,符号位不动,其余取反; u 补码反码,减1; u 补码原码,减1;符号位不动,取反 或者符号位不动,其余取反; 正数加1。 32 练一练: 1、已知补码:1001 1101,写出反码和原码。 u 反码:1001 1100 u 原码:1110 0011 2、已知补码:1100 1001,写出原码。 u 原码:1011 0111 33 主要内容 2.1 预备知识 2.2 常量和变量的概念 2.3 各种数据类型的常量及变量 2.4 变量赋初值 2.5 不同类型数据之间的混合运算 2.6 常用运算符和表达式 2.7 输入函数与输出函数 34 2.2.1 C语言的基本元素 1、符号集 2、标识符 3、关键字 35 1、符号集 也叫字符集,包括如下五种: (1)大写字母A-Z;(2)小写字母a -z; (3)数字09;(4)下划线 _ (5)标点符号和运算符 36 2、标识符 用来标识变量、常量、函数、文件的名字的 字符序列。 构成规则: u 由英文字母(大小写)或下划线开头; u 其后跟着若干个英文字母、数字和下划线 ; u 大小写敏感,不能以数字开头; u 长度各个系统不同,一般不要超过8个字 符; 37 例:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 char ab _above $123 lotus_1_2_3 38 3、关键字 又称 保留字,是C语言中具有特定含义、专门 用做语言特定成分的一类标识符。(P168) ANSI规定了32个关键字,(turbo c扩展了11个。) u 例如: int 、float、char 注意: u 1、所有的关键字都有特定用途,不能用作 其他。 u 2、所有的关键字都必须小写。 39 2.2.2 常量 定义:程序运行时其值不能改变的量(即常 数)。 分类:直接常量和符号常量 u 1、直接常量: l整型常量,例如:30,7, l实型常量,例如2.8,0.67 l字符常量,例如 a l字符串常量,例如”word” 40 2.2.2 常量 定义:程序运行时其值不能改变的量(即常 数)。 分类:直接常量和符号常量 u 2、符号常量:用标识符代表常量 定义格式: #define 符号常量 常量 l注意: 一般用大写字母 是宏定义预处理命令,不是C语 句 41 例:符号常量举例 #define PRICE 30 main() int num,total; num=10; total=num*PRICE; printf(“total=%d“,total); 运行结果: total=300 42 2.2.2 变量 定义:程序运行时其值可以改变的量。 l每个变量有一个名字:用标识符表示 。 l每个变量有一个存储空间(存储单元 ),该单元中的状态所表示的数为此时变量 的值。 u 变量的使用:先定义,后使用 43 编译程序根据变量 定义为其分配指定 字节的内存单元。 . 地址 int a=1, b=-3,c; a b c 2字节 2字节 2字节 地址 地址 . 内存 1 -3 随机数 44 2.2.2 变量-其值可以改变的量 注意: u 1、见名知义; u 2、先定义,后使 用; u 3、一般使用小写 字母。 变量定义的一般格式: 数据类型 变量1,变量2,变量n; 例: int a=2,b,c=4; float data=3.67; char ch=A; 45 变量定义位置:一般放在函数开头 main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data); 变量定义 可执行语句 46 主要内容 2.1 预备知识 2.2 常量和变量的概念 2.3 各种数据类型的常量及变量 2.4 变量赋初值 2.5 不同类型数据之间的混合运算 2.6 常用运算符和表达式 2.7 输入函数与输出函数 47 2.3 各种数据类型的常量及变量 数据为什么要区分类型? u 不同类型的数据代表不同的 l数据表示形式 l合法的取值范围 l占用内存空间大小 l可参与的运算种类 48 数据类型总 表 C 数 据 类 型 基本类型 构造类型 指针类型 空类型void 定义类型typedef 字符类型 char 整 型 实型 单精度型float 双精度型double 数组 结构体struct 共用体union 短整型short 长整型long 整型int 数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作 枚举 49 2.3.1 整数类型 整型数据的标识符是 int 。 分类:整形常量、整型变量。 整型数据根其加上的不同的限定词,则占用 的内存字节数不同。 50 限定词:描述数据占用的内存字节数 short(短整型),int ,long(长整型), short int long u unsigned short (无符号短整型), u unsigned int (无符号整型), u unsigned long (无符号长整型), 51 01 11 11 11 11 11 11 11int型:最大:32767 10 00 00 00 00 00 00 00最小:-32768 11 11 11 11 11 11 11 11unsigned int型:最大:65535 00 00 00 00 00 00 00 00最小:0 52 注意: 其中short和long的引入是为满足实际要求的 不同长度的整数,而经unsigned限定词限定 的整数总是正的。 short与int类型至少为16位,而long类型至 少为32位,并且,short类型不得长于int类 型,而int类型不得长于long类型。 可用sizeof(类型标识符)测量。 53 unsigned int b1,b2; 一个整型常量只可以赋给能容纳下其值的整 型变量。 如:a1,a2的取值范围为 -32768- 32767 b1,b2的取值范围为 0-65535 如果:a1=65535; 或者: b1=-1; 在内存中数值将不是所赋的数值。 56 2.3.2 实数类型 分类: u 单精度(float) u 双精度(double) l二者的区别在于所占存储位的多少, 从而决定了其取值范围。 l一般float 占用32位(bits), double占用64位(bits)。 57 a=111111.111; /* a=111111.1*/ double b; b=111111.111; /* b=111111.111*/ float a,b,c; double x,y; 60 例 实型变量的有效数字。 main( ) double a; a=6.152 367 864 359 046 178 294 901; printf(“n%25.20f“,a); 输出结果为: 6.15236786435904648000 61 对上一个例题的解释(参阅): 在这个例子中,a被赋值了一个有效位数为25位的数 字。但由于a是double类型的,所以a只能接收1516位 有效数字。在printf语句中,我们使用了%25.20f这样 的格式符号,这指示printf语句在输出a时总长度应为 25位,小数点位数占20位。输出的结果显然显示了25位 数,但只有6.152367864359046共16位有效数字被正确 显示出来,后面的数字是一些无效的数值。这就表明 double型的数据只接收1516位有效数字。 62 基本数据类型 类型符号关键字数的表示范围所占位数 整型字符型实型 有 无 (signed)int16 -3276832767 (signed)short16 -3276832767 (signed)long 32 -21474836482147483647 16unsigned int 065535 32 04294967295unsigned long unsigned short16 065535 有float 32 3.4e-383.4e38 有double641.7e-3081.7e308 有char 8-128127 无unsigned char80255 说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例。 63 2.3.3 字符类型 字符型数据包含的是一个字符集。一般用的是 ASCII码字符集 。 v 字符集中的每一个字符都有一个序号,称 为ASCII码。 v ASCII码大的字符比ASCII码小的字符值大 。 v 字符类型的标识符是char。 64 u 一个字符型变量的值只能是一个单个字符; 在内存中占一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论