第3章基本数据类型与数据运算精选文档.ppt
《第3章基本数据类型与数据运算精选文档.ppt》由会员分享,可在线阅读,更多相关《第3章基本数据类型与数据运算精选文档.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章基本数据类型与数据运算章基本数据类型与数据运算本讲稿第一页,共三十三页3.2 3.2 数据类型数据类型基本基本数据数据类型类型整型整型可根据内存长度和有无符号细分可根据内存长度和有无符号细分实型实型/浮点型浮点型分单精度和双精度两种分单精度和双精度两种字符型字符型存放存放ASCII码码,分有分有/无符号两种无符号两种指针类型指针类型又称地址类型又称地址类型,存放变量地址存放变量地址空类型空类型主要用于函数返回值类型和指针主要用于函数返回值类型和指针构造构造数据数据类型类型数组类型数组类型在基本数据类型的基础上构造而在基本数据类型的基础上构造而成,枚举类型亦有说为基本数据成,枚举类型亦有
2、说为基本数据类型类型结构体类型结构体类型公用体类型公用体类型枚举类型枚举类型C中没有中没有bool型型(逻辑型逻辑型),进行逻辑运算时零代表假,非零代表真进行逻辑运算时零代表假,非零代表真本讲稿第二页,共三十三页整型整型:整型分类整型分类类型说明符类型说明符内存内存长度长度表示范围表示范围有符号短整型有符号短整型signed short int16-3276832767(教材错)(教材错)无符号短整型无符号短整型unsigned short int16065535(教材错)(教材错)有符号长整型有符号长整型signed long int32-21474836482147483647无符号长整型
3、无符号长整型unsigned long int3204294967295有符号基本整型有符号基本整型signed int16/32-3276832767-21474836482147483647无符号基本整型无符号基本整型unsigned int163206553504294967295无符号数直接转换为二进制存储无符号数直接转换为二进制存储,高端补高端补0;有符号数存储补码;有符号数存储补码本讲稿第三页,共三十三页实型:参照实型:参照IEEE754IEEE754标准标准分类内存长度符号位S指数E(阶码)尾数M单精度 float32最高位次8位,真值指数e-126,127;阶码E=e+1271
4、,254低端剩余各位存储纯小数部分,隐含小数点前.如此能使得精度更高.23+1/52+1双精度double64最高位次11位,真值指数e-1022,1023;阶码E=e+10231,2046特殊情况0.0:S=0/1;E全0;M全0;:S=0/1;E全1;M全0;NAN:S=0/1;E全1;M非0转化为十进制后,精度分别为7位,15-16位本讲稿第四页,共三十三页字符型与字符串常量字符型与字符串常量:数据类型数据类型类型说明符类型说明符内存内存长度长度字符范围字符范围有符号字符型有符号字符型signed char8可表示可表示256个字符,个字符,前前128个同个同ASCII.后后128不同系
5、统有所不不同系统有所不同同无符号字符型无符号字符型unsigned char8字符型常量是用单引号括起来的单个字符,如字符型常量是用单引号括起来的单个字符,如char c=a,a=a字符型变量的内存单元中实际存放字符的字符型变量的内存单元中实际存放字符的ASCII码码,如上例存如上例存97由于字符型数据实际对应一整数由于字符型数据实际对应一整数,故字符型与整型有时可通用:故字符型与整型有时可通用:int i=a;char c=97;int j=a-32;char b=c-32;数值范围的理解数值范围的理解:有符号字符型-128到127,无符号0-255本讲稿第五页,共三十三页3.3 3.3 常
6、量与变量常量与变量p常量:程序运行过程中不可变的量常量:程序运行过程中不可变的量整型 5-12 010-010 0 x2-0 x2F 50U -123L 实型 3.14 12.5 12.3e3 -1E4 2.3f字符型a A 2$n 101 x2A字符串“study hard!”“a”整型默认为signed int型,后加U或L可改变类型;有十/八/十六进制三种写法实型默认为double型,后可加f指定为float型,分小数形式和指数形式两种;指数形式表示时E或e前不能空,e后为整数字符型常量默认为signed char;分普通字符和转义字符两种.具体看书自学字符串常量是”括起来的串,末位自动
7、添加结束符0,务必区分A与”A”注意:-32768U与-32768在寄存器中存储结构一样,均为FF FF 80 00。区别在于,设有Unsigned x;则x=-32768会有警告,而x=-32768U无警告97 0本讲稿第六页,共三十三页3.3 3.3 常量与变量常量与变量p符号常量符号常量:用标识符代替一个常量用标识符代替一个常量(给常量起名给常量起名)#define PI 3.14#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define NULL 0#include#include#define PRICE 30#de
8、fine PRICE 30void main()void main()int num,total;int num,total;num=10;num=10;total=num*PRICE;total=num*PRICE;printf(total=%dn,total);printf(total=%dn,total);使用目的:见名知意使用目的:见名知意,一改全改一改全改标识符命名规则:由字母、数字和下划线组成标识符命名规则:由字母、数字和下划线组成,以字母和以字母和下划线开头,不能与系统保留字下划线开头,不能与系统保留字(3.1)重名。通常不多于重名。通常不多于8 8个个字符。不仅符号常量名,变量
9、名和函数名亦遵循此规则字符。不仅符号常量名,变量名和函数名亦遵循此规则规范:符号常量名通常全部大写规范:符号常量名通常全部大写,变量名和函数名首字母变量名和函数名首字母小写小写,若由多个单词组成则剩余单词首字母大写。若由多个单词组成则剩余单词首字母大写。注:符号常量在编译阶段直接被替换为所代表的常数,不注:符号常量在编译阶段直接被替换为所代表的常数,不为其分配内存为其分配内存,不能赋值。不能赋值。符号常量定义语句后无分号符号常量定义语句后无分号本讲稿第七页,共三十三页3.3 3.3 常量与变量常量与变量p变量变量:程序运行中值可变的量。程序运行中值可变的量。注:变量实际对应内存中一个内存块,块
10、大小由变量注:变量实际对应内存中一个内存块,块大小由变量类型决定类型决定,根据变量名可找到对应的内存块根据变量名可找到对应的内存块注:为变量赋值就是根据变量名找到相应内存块,之注:为变量赋值就是根据变量名找到相应内存块,之后将数据后将数据(位于累加器位于累加器)写入其中;取变量的值就是通过写入其中;取变量的值就是通过变量名找到相应的内存块,从中读取数据到变量名找到相应的内存块,从中读取数据到CPUCPU命名规范:遵循标识符命名规则,最好见名知义命名规范:遵循标识符命名规则,最好见名知义注注:必须先定义后使用必须先定义后使用;一次可定义多个同类型的变量一次可定义多个同类型的变量;使用前通常赋初值
11、使用前通常赋初值,可定义同时赋值可定义同时赋值(如如int i=0)int i=0)short flag;int i,j,k;long factorial;unsigned count;float x,y;double average;char c;unsigned char a;本讲稿第八页,共三十三页作业说明:作业说明:l求最大最小值求最大最小值l辗转相除辗转相除l级数求和级数求和l素数素数+Fibnacci数列数列+回文回文+水仙花数?水仙花数?本讲稿第九页,共三十三页3.4 3.4 基本数据类型的转换基本数据类型的转换p自动类型转换自动类型转换:某些类型的数据一旦参与运算(即进入进入C
12、PU寄存寄存器器时),或者不同类型的数据进行混合运算时,数据类型就会发生自动转换,称之为自动类型转换p转换规则转换规则:范围小到大范围小到大,等值转换等值转换(不同编译器规则不尽同不同编译器规则不尽同,VC如下如下)punsigned char/short进CPU自动转为unsigned int;【高位补零高位补零】p signed char与short进CPU时自动转换为等值int;【符号位扩展符号位扩展】p float进CPU直接转为double;【指数部分与尾数部分分别扩充指数部分与尾数部分分别扩充】p无论哪种整型与double型混合运算,整型均转为等值double型 其余:类型长短不一
13、时,以较长的为准,长度相同时,有符号的转化为无符号的,如32767+1L结果32768L;再如a=-1L;b=1U;则则abp例:234-b+26.5本讲稿第十一页,共三十三页3.4 3.4 基本数据类型的转换基本数据类型的转换p强制类型转换强制类型转换:通过类型转换语句显式进行转换通过类型转换语句显式进行转换(目目标类型标类型)(变量或表达式变量或表达式)注注:对变量进行强制类型转换时只是在对变量进行强制类型转换时只是在CPU寄存器中对变量值作临时转换寄存器中对变量值作临时转换,变量类型及其在内存中的数据保持不变变量类型及其在内存中的数据保持不变,如以下语句执行后如以下语句执行后x仍为仍为f
14、loat型,型,值仍然为值仍然为3.5:float x=3.5;int i=(float)x;注注:假设假设float x=3.5,y=3.5;则则(int)x+y为实数值为实数值6.5;而而(int)(x+y)值为值为7#include void main()printf(%dn,(int)3.5);printf(%dn,(int)-3.5);printf(%lfn,(double)3);printf(%lfn,(double)-3);printf(“%lfn”,5/3);/不匹配不匹配,结果错结果错printf(%lfn,(double)5/3);/注注:printf(“%lfn”,1)输
15、出输出0.000000本讲稿第十二页,共三十三页 double型值型值=float变量:指数部分与尾数部分分别截取,转换变量:指数部分与尾数部分分别截取,转换成十进制相当于截取其前成十进制相当于截取其前7位有效数字位有效数字double值值=整型变量整型变量:舍弃小数部分舍弃小数部分,存整数部分存整数部分整型数据整型数据=实型变量实型变量:以等值的浮点数形式存储以等值的浮点数形式存储各类整型、字符型之间:先将右侧值读入寄存器(遵循前述自各类整型、字符型之间:先将右侧值读入寄存器(遵循前述自动类型转换规则动类型转换规则,VC下内存位数不足下内存位数不足4字节者均扩展成字节者均扩展成4字节字节,有
16、符号有符号数按符号位扩展数按符号位扩展,无符号数作零扩展。无符号数作零扩展。TC下字符型扩充成下字符型扩充成2字节字节),之后之后截取截取相应数目的字节放入左侧变量空间相应数目的字节放入左侧变量空间补充:不同类型数据间的相互赋值补充:不同类型数据间的相互赋值char c1,c2;/以下是VC下过程分析,TC下将下划线部分去掉c1=300;/R(300)=0 x00 00 01 2C;M(c1)=0 x2Cc2=400;/R(400)=0 x00 00 01 90;M(c2)=0 x90printf(“%c%cn”,c1,c2);/R(c1)=00 00 00 2c,/R(c2)=ff ff f
17、f 90;截取末字节,VC输出,?;TC输出,printf(“%d%dn”,c1,c2);/R(c1)=00 00 00 2c,/R(c2)=ff ff ff 90;分别是44和-112补码,输出44与-112本讲稿第十三页,共三十三页补充:格式化输出函数补充:格式化输出函数printfprintf说明说明p正常情况:正常情况:格式控制符格式控制符%d用于输入输出有符号整型数用于输入输出有符号整型数,%u用用于无符号整型数于无符号整型数,%X或或%O以十六或八进制输出各类整型;以十六或八进制输出各类整型;%f用用于于float,%lf用于用于double,%c用于用于charp原理说明原理说明
18、:输出值先进入寄存器输出值先进入寄存器(可能要扩充可能要扩充),以,以c输出则截取输出则截取寄存器最末一字节输出其对应的字符;以寄存器最末一字节输出其对应的字符;以d输出意味着将寄存器中输出意味着将寄存器中的数据当作的数据当作signed int的补码的补码,输出此补码对应的真值;以输出此补码对应的真值;以u输输出意味着将寄存器中的数据当作一个出意味着将寄存器中的数据当作一个unsigned int,直接转换,直接转换为十进制数后输出;为十进制数后输出;以以X输出则将寄存器中的二进制数从低到高输出则将寄存器中的二进制数从低到高四位合一位输出,高位零省略;以四位合一位输出,高位零省略;以O则三位
19、合一位输出则三位合一位输出short a;unsigned short c;short e;/以下VC下分析,TC去下划线a=100;/*R(100)=0 x00 00 00 64;M(a)=0 x00 64*/e=50000;/*R(50000)=0 x00 00 C3 50;M(e)=0 xC3 50*/c=a=e;/*R(e)=0 x ff ff C3 50;M(a)=0 xC3 50*/*R(a)=0 xFF FF C3 50;M(c)=0 xC3 50*/printf(“%dn”,a);/*R(a)=0 xFF FF C3 50;输出-15536*/printf(“%u n”,c);
20、/*输出50000*/printf(“%xn”,a);/R(a)=0 xFFFFC350,VC:ffffc350,TC:C350printf(“%o n”,c);/*R(c)=0 x00 00 C3 50;输出141520*/本讲稿第十四页,共三十三页作业作业1:1:分析如下程序的执行过程与输出结果分析如下程序的执行过程与输出结果(似前例似前例,参考作业说明参考作业说明)#includevoid main()short a,b;unsigned short c,d;long e,f;a=100;/*R(100)=(00 00 00 64)16,截取得,截取得M(a)=(00 64)16*/b=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 数据类型 数据 运算 精选 文档
限制150内