C02数据与运算_第1页
C02数据与运算_第2页
C02数据与运算_第3页
C02数据与运算_第4页
C02数据与运算_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、数据与运算数据与运算u 计算机如何存储数据?计算机如何存储数据?u C语言如何表示数据?语言如何表示数据?u 如何命令计算机进行数值计算?如何命令计算机进行数值计算?2u内存内存( (主存主存):):存放存放正在正在/ /准备运行的程序和数准备运行的程序和数据据, ,容量从几百容量从几百KBKB到几百到几百MBMB甚至几甚至几GB,GB,数据数据( (及程序及程序) )通常被分块存放通常被分块存放uCPUCPU中的寄存器中的寄存器: :每个寄存器能够存放固定长每个寄存器能够存放固定长度的数据度的数据, ,寄存器数量很小寄存器数量很小, ,速度很快速度很快 u外存外存( (辅存辅存):):以文件

2、的形式长期存放大量程序以文件的形式长期存放大量程序和数据和数据, ,外存上的程序和数据只有调进内存后才能外存上的程序和数据只有调进内存后才能使用使用计算机中存储数据的设备3不同的不同的CPU中含有不同数中含有不同数量的寄存器量的寄存器, ,以以二进制二进制形形式存放数据。每个寄存器式存放数据。每个寄存器有固定的名称和容量有固定的名称和容量( (二二进制位数进制位数) )在寄存器中存储数据把二进制数把二进制数1001111010011110放到放到ALAL中中1 0 0 1 1 1 1 01 0 0 1 1 1 1 0例如,例如,intelintel公司的奔腾公司的奔腾CPUCPU中有中有一个一

3、个8 8位寄存器位寄存器ALALAL你知道此时你知道此时ALAL中的数据代中的数据代表什么含义吗?表什么含义吗?4如何组织内存u 1 1、内存以、内存以字节字节为基本单位为基本单位u 2 2、内存中有很多字节、内存中有很多字节u 3 3、存在的问题:、存在的问题:如何区分如何区分“这个字节这个字节”和和“那个字节那个字节”?一个字节的容量很小,一字一个字节的容量很小,一字节放不下的数据如何处理?节放不下的数据如何处理?(解答见后)(解答见后)5内存地址内存字节的编号每个字节确定一个编号每个字节确定一个编号, ,从从0编起编起, ,依次安排。结构上形成梯子状的内存图。依次安排。结构上形成梯子状的

4、内存图。习惯上习惯上, ,画内存图时各个字节右边写地址;画内存图时各个字节右边写地址;0123456内部填写其中存放的数据值;内部填写其中存放的数据值;0 0 0 0 1 0 1 11 1 0 0 0 1 0 10 1 0 1 1 0 1 10 1 1 0 1 1 1 00 1 1 0 0 0 1 00 0 0 0 1 0 1 10 0 0 0 1 0 1 10 0 0 0 1 0 1 10 0 1 0 1 0 0 00 0 0 0 1 0 1 10 0 0 0 1 0 1 10 0 0 0 1 0 1 10 0 1 0 1 0 0 0将来还可以给各个字节命名。将来还可以给各个字节命名。c1c

5、2abt6多字节联合使用存放一个数据一个字节只能存放一个字节只能存放8 8位二进制数据,为了存放位二进制数据,为了存放1616位二进制数,可以把连续两位二进制数,可以把连续两个字节联合在一起捆绑使用。个字节联合在一起捆绑使用。100010001001100110021002100310031004100410051005 地址为地址为10011001的高字节的高字节 地址为地址为10001000的低字节的低字节地址:地址:1005 1004 1003 10021005 1004 1003 1002类似地,可以把连续类似地,可以把连续4 4个字节联合使用。个字节联合使用。通常,把偶地址开始的连续

6、两个字节联合使用,把地址是通常,把偶地址开始的连续两个字节联合使用,把地址是4 4的倍数起的连的倍数起的连续续4 4个字节联合在一起。个字节联合在一起。7内存图实用画法如图能够表示以下含义如图能够表示以下含义1 1、在地址为、在地址为10001000的内存字节中存的内存字节中存放了一个数据放了一个数据3535;2 2、地址、地址10021002和和10031003的两个字节联的两个字节联合使用存放数据合使用存放数据14271427;3 3、从地址、从地址10041004开始的连续开始的连续4 4个字节个字节联合使用存放数据联合使用存放数据2.718282.71828。注意:注意:为了为了“对齐

7、对齐”,一般不把,一般不把地址为地址为10011001和和10021002的两个字节的两个字节联合使用。宁可让地址为联合使用。宁可让地址为10011001的字节空闲。的字节空闲。10001001100210043514272.718288提 问1 1、如果曾经命令计算机、如果曾经命令计算机“把地址把地址10021002和和10031003的两个字节联合使用并存放的两个字节联合使用并存放数据数据1427”1427”,还可以再命令计算机,还可以再命令计算机“取地址取地址10021002字节的数据字节的数据”吗?吗?即能否在某一时刻联合使用,另即能否在某一时刻联合使用,另一时刻分别使用?一时刻分别使

8、用?10001001100210043514272.718282 2、这时如果命令计算机把数据、这时如果命令计算机把数据2828放到放到地址为地址为10031003的内存字节,会产生什的内存字节,会产生什么样的效果?么样的效果?3 3、计算机怎么知道、计算机怎么知道10021002起的两个字节起的两个字节放的是整数,而放的是整数,而10041004起的起的4 4个字节个字节放的是实数?放的是实数?91 1、普通十进制写法、普通十进制写法35 35 ,-78 -78 ,24649 24649 等等2 2、十六进制写法、十六进制写法( (通常不用负数通常不用负数) )0 x8A 0 x8A ,0X

9、35 , 0 xABC 0X35 , 0 xABC ,-0XAA -0XAA 等等3 3、八进制写法、八进制写法( (通常不用负数通常不用负数) )025 025 ,0123 0123 ,077 077 ,-033 -033 等等注意!注意! 25 25 与与 025 025 不等值不等值C语言程序中的整数写法10如何把如何把105105存放到如上的存放到如上的1 1字节存储器中?字节存储器中?最简单的方法:用二进制直接存放最简单的方法:用二进制直接存放105105对应的二进制对应的二进制0110100101101001问题:问题:能够存放的最大能够存放的最大/ /最小数是多少?最小数是多少?

10、如何存放负数?如何存放负数?(1)(1)有没有其它存放方法?有没有其它存放方法?用1字节存放整数0 1 1 0 1 0 0 10 1 1 0 1 0 0 1补码补码现在最常用的数据存储形式。现在最常用的数据存储形式。如上的存放形式称为无符号数,补码用如上的存放形式称为无符号数,补码用于存储带符号数于存储带符号数11如何把如何把-105-105存放到如上的存放到如上的1 1字节存储器中?字节存储器中?补码存储规则:补码存储规则:确定位数确定位数88位位确定正负确定正负非负整数直接存储,非负整数直接存储,0 0127127负数的处理:负数的处理:取绝对值,写成二进制:取绝对值,写成二进制:0110

11、100101101001所有位取反:所有位取反:1001011010010110最末位加最末位加1 1:1001011110010111(1)(1)问题:问题:1 1字节、补码,能够存放的最小数是多字节、补码,能够存放的最小数是多少?少?用1字节、补码存放整数1 0 0 1 0 1 1 11 0 0 1 0 1 1 112如上的如上的1 1字节存储器中存放了一个二进制整数,对字节存储器中存放了一个二进制整数,对应的十进制是多少?应的十进制是多少?二进制对应的整数是多少?1 1 0 1 1 0 1 11 1 0 1 1 0 1 1规则:规则:判断正负判断正负正数简单,略;负数,先写下正数简单,略

12、;负数,先写下“-”-”所有位取反:所有位取反:0010010000100100最末位加最末位加1 1:0010010100100101(1)(1)二转十得结果:二转十得结果: -37-37问题:你是如何知道存放形式是补码?问题:你是如何知道存放形式是补码?13VC支持的整数存储形式单字节、无符号单字节、无符号 0 0 255255单字节、带符号单字节、带符号 -128 -128 +127+127双字节、无符号双字节、无符号 0 0 6553565535双字节、带符号双字节、带符号 -32768 -32768 +32767+327674 4字节、无符号字节、无符号 0 0 2 23232-1-

13、14 4字节、带符号字节、带符号 -2-23131 +2+23131-1-1问题:问题:如何区分一个数据是用哪种存储形式?如何区分一个数据是用哪种存储形式?如何命令计算机:如何命令计算机:“准备一个双字节、带符号准备一个双字节、带符号存储容器存储容器”答案见答案见“常量与变量常量与变量”14如图是把内存中两字节联合使用存放整数如图是把内存中两字节联合使用存放整数的例子,此时仍然有两种存放形式:的例子,此时仍然有两种存放形式:1 1、存放非负整数、存放非负整数2 2、存放带符号数、存放带符号数由于例子中存放的由于例子中存放的是正数,存放形式是正数,存放形式相同相同双字节联合使用存放整数01101

14、101 101100112600315IEEE754IEEE754标准中关于以标准中关于以4 4字节和字节和8 8字节存储单元存储字节存储单元存储实数的存储方式被广泛应用于计算机中。实数的存储方式被广泛应用于计算机中。数符数符(1(1位位) ):表示整个实数的正负,:表示整个实数的正负,0 0正正1 1负负阶码阶码(8(8位位) ):整数,记作:整数,记作E E,表示,表示“尾数尾数2 2E E”尾数尾数(23(23位位) ):是:是“1.1.* * * * *”的小数部分的小数部分4字节存储实数31 24 16 8 031 24 16 8 0数符数符 阶码阶码 尾数尾数 1611000001

15、,11110011,00000000,00000000 11000001,11110011,00000000,00000000 数符为数符为1 1,表示负数,表示负数 阶码为阶码为1000001110000011,对应十进制的,对应十进制的131131,减,减127127后后得到得到4 4,即阶码为,即阶码为4 4 尾数为尾数为1.1.111001100(111001100(注意注意“1.”1.”并不存储并不存储) )由于阶码是由于阶码是4 4,这表示把尾数乘以,这表示把尾数乘以2 24 4,可以通过把,可以通过把尾数中的小数点向右移动尾数中的小数点向右移动4 4位实现,从而得到位实现,从而得

16、到二进制的二进制的11110.011000000000000000011110.0110000000000000000,相应,相应的十进制数是的十进制数是30.37530.375,由于数符位上是,由于数符位上是1 1,则,则这这4 4个字节存储的实数是个字节存储的实数是-30.375 -30.375 浮点数:实数的存储形式17以以4 4字节存储实数字节存储实数0.006250.00625,各个二进制位如何?,各个二进制位如何? 0.0062500.006250,所以数符位为,所以数符位为0 0; 0.006250.00625对应的二进制数是一个循环小数,值对应的二进制数是一个循环小数,值为为0

17、.00000001100110011000.0000000110011001100。把小数点向。把小数点向右移动右移动8 8位后得位后得1.1.10011001100110011001001100110011001100,使得整数部分是使得整数部分是1 1,“1.”1.”不存储,故尾数是不存储,故尾数是1001100110011001100110110011001100110011001101;( (四舍五入四舍五入) ) 对尾数的小数点向右移动了对尾数的小数点向右移动了8 8位,阶码部分的位,阶码部分的值为值为(-8)+127=119(-8)+127=119,对应的二进制是,对应的二进制是0

18、111011101110111; 所以,全部的所以,全部的3232位二进制是:位二进制是:0 00111011,10111011,11001100,11001100,110011011001100,11001100,11001101浮点数:实数的存储形式18数据类型数据类型某个数据集合中各元素的共有特征。某个数据集合中各元素的共有特征。数据类型决定:数据类型决定:存储一个该类型的数据需要几个字节存储一个该类型的数据需要几个字节数据的存储形式:各二进制位的含义如何数据的存储形式:各二进制位的含义如何数据能够进行哪些计算数据能够进行哪些计算/处理处理(1)C语言中有若干写法表示数据类型,见下页。语

19、言中有若干写法表示数据类型,见下页。什么是数据类型19类型写法类型写法字节数字节数 含义含义signed char 1带符号整数带符号整数unsigned char 1无符号整数无符号整数signed short int 2带符号整数带符号整数unsigned short int 2无符号整数无符号整数signed int 4带符号整数带符号整数signed long int 4带符号长整数带符号长整数unsigned int 4无符号整数无符号整数unsigned long int 4无符号长整数无符号长整数float 4单精度实数单精度实数double 8双精度实数双精度实数注:注:VC+

20、6.0版本适用版本适用有关数值的数据类型(部分)20保留字保留字具有特定含义具有特定含义/ /功能的字母组合功能的字母组合标准标准C C语言共有语言共有3232个保留字,如下:个保留字,如下:C语言的保留字autoautobreakbreakcasecasecharcharconstconstcontinuecontinuedefaultdefaultdododoubledoubleelseelseenumenumexternexternforforfloatfloatgotogotoififintintlonglongregisterregisterreturnreturnshortshor

21、tsignedsignedsizeofsizeofstaticstaticstructstructswitchswitchtypedeftypedefunionunionunsignedunsignedvolatilevolatilevoidvoidwhilewhile21定义:常量定义:常量-程序中所写的数据程序中所写的数据 变量变量-程序运行过程中存储数据的程序运行过程中存储数据的存储单元存储单元问题:问题:1. 如何区分常量的类型?如何区分常量的类型?2. 如何命令计算机准备一个变量?如何命令计算机准备一个变量?3. 能不能用能不能用1 1个字节个字节( (或者或者3 3个字节、个字节、

22、4 4个字节个字节) )存存放整数?放整数?4. 变量有什么作用?变量有什么作用?5. 如何对变量进行操作?如何对变量进行操作?(见后页)(见后页)常量与变量22定义:常量定义:常量-程序中所写的数据程序中所写的数据 整数可以用三种数制,实数则只用十进制整数可以用三种数制,实数则只用十进制数值常量的末尾可以加上字母表示类型,但通数值常量的末尾可以加上字母表示类型,但通常不加字母,而是由计算机自动处理常不加字母,而是由计算机自动处理 实数除了常规写法外,还有科学记数法:实数除了常规写法外,还有科学记数法: 比如比如1 1光年大约是光年大约是9.469.4610101515米,一个氢原子的质量米,

23、一个氢原子的质量是是1.6731.6731010-24-24克,其中的数据在克,其中的数据在C C语言中分别写作:语言中分别写作:9.46e159.46e15和和1.673E-241.673E-24即即: a: a1010b b在在C C语言中写作语言中写作aEbaEb。1 1、“E”E”可以大写也可以小写;可以大写也可以小写;2 2、a a可正可负,可以是小数形式;可正可负,可以是小数形式;3 3、b b可以是正数也可以是负数,但必须是整数。可以是正数也可以是负数,但必须是整数。数值常量通常不需要指明类型23如何命令计算机准备一个变量?如何命令计算机准备一个变量?称为称为“变变量定义量定义”

24、、“变量声明变量声明”变量定义格式变量定义格式A:数据类型数据类型 变量名;变量名;例:例:int vx;int vx;含义含义/ /功能:命令计算机准备一个名为功能:命令计算机准备一个名为vxvx的变量,的变量,用于用于( (其中可以其中可以) )存放一个存放一个带符号带符号整数。这是整数。这是“signed int vx”signed int vx”的省略形式。的省略形式。变量(variable)241 1、可以用作变量名的符号:字母、数字、下划、可以用作变量名的符号:字母、数字、下划线线“_”_”;2 2、数字不能开头;、数字不能开头;3 3、长度有一定限制(根据不同的系统而定);、长度

25、有一定限制(根据不同的系统而定);4 4、大写字母和小写字母是不同的符号,、大写字母和小写字母是不同的符号,“A12”A12”和和“a12”a12”是不同的两个名字;是不同的两个名字;5 5、“保留字保留字”不能用作变量名。不能用作变量名。 简化后的规定:简化后的规定:“字母开头的字母数字串字母开头的字母数字串”。 适用于其它需要命名的地方。适用于其它需要命名的地方。变量(标识符)命名规则251.1.变量是存放数据的变量是存放数据的“容器容器”,该,该“容器容器”的大小(占的大小(占据字节数)和其中如何存放数据由定义变量时的据字节数)和其中如何存放数据由定义变量时的“数据类型数据类型”确定。确

26、定。2.2.用格式用格式A A定义变量仅仅是通知计算机准备定义变量仅仅是通知计算机准备“容器容器”,而没有说明是否要求计算机在而没有说明是否要求计算机在“容器容器”中存放内容。中存放内容。对此计算机按两种情况处理,一是保持该对此计算机按两种情况处理,一是保持该“容器容器”中原有的内容不变,二是在其中各个二进制位填中原有的内容不变,二是在其中各个二进制位填0 0。3.3.使用变量之前必须准备容器使用变量之前必须准备容器定义变量,定义变量,“先定义先定义后使用后使用”是基本规则。是基本规则。4.4.定义变量时使用的类型可以是如同定义变量时使用的类型可以是如同intint的的C C语言固有数语言固有

27、数据类型,也可以是自定义类型。据类型,也可以是自定义类型。注意:可以说注意:可以说“变量中存放的数据变量中存放的数据”、“变量占若干字变量占若干字节节”、“存储某个类型的数据需要几字节存储某个类型的数据需要几字节”,而不,而不要说要说“某类型占几字节某类型占几字节”关于变量定义的说明26实型变量用于存放实数。实型变量用于存放实数。C C语言中表示语言中表示“实数类型实数类型”的保的保留字是留字是“floatfloat”和和“doubledouble”例如,例如,float v1 ;double v2 ;floatfloat类型的变量类型的变量v1v1以连续以连续4 4个字节存放实数,能够存放个

28、字节存放实数,能够存放约约-10-10383810103838的数据,支持的数据,支持6 67 7个十进制有效数字。个十进制有效数字。doubledouble类型的变量类型的变量v2v2用连续用连续8 8个字节存放实数,能够存放个字节存放实数,能够存放约约-10-103083081010308308的数据,支持的数据,支持14141515个有效数字。个有效数字。如果需要更大的范围和更多的有效数字如果需要更大的范围和更多的有效数字,C,C语言还有语言还有long long doubledouble类型,以类型,以1616个字节存放实数。个字节存放实数。用float或double定义实型变量27定

29、义多个变量在程序中需要使用多个变量时可以多次使用格式在程序中需要使用多个变量时可以多次使用格式A A,例如:,例如: double vadouble va; double vb;double vb; double vc; double vc;定义多个同类型的变量时,可以使用下面的格式:定义多个同类型的变量时,可以使用下面的格式: 变量定义格式变量定义格式B B:数据类型数据类型 变量名变量名1 1,变量名,变量名2 2,变量名,变量名n n;例如上面定义三个变量的写法可以写作:例如上面定义三个变量的写法可以写作:double va,vb,vc;double va,vb,vc;28变量的初值定义

30、变量就是准备定义变量就是准备“容器容器”。在准备。在准备“容器容器”的同时可以命的同时可以命令计算机把一个数据存放在令计算机把一个数据存放在“容器容器”当中作为变量的初值。当中作为变量的初值。这时需要使用格式这时需要使用格式C C变量定义格式变量定义格式C C:数据类型数据类型 变量名变量名 = = 初值;初值;例如:例如:double pi=3.14159;double pi=3.14159;定义变量的几种形式经常会混合使用,例如:定义变量的几种形式经常会混合使用,例如:double vx,pi=3.14159,vy,e=2.71828;double vx,pi=3.14159,vy,e=2

31、.71828;29关于变量初值的规定在在TC2.0/TC3.0中,定义变量的初值必须是中,定义变量的初值必须是常量常量或常量构成的计算式或常量构成的计算式。例如例如 :int va=1 ; double vb=3.14*4 ; 以下是错误的写法:以下是错误的写法:double va=1.9 , vb=va*3.14;注意注意:在高版本的:在高版本的C语言系统,如语言系统,如VC+,已经,已经取消了取消了“初值必须是常量初值必须是常量”的限制。即如上定义的限制。即如上定义变量变量vb的写法在的写法在TC是是错误的,在是是错误的,在VC中是对的。中是对的。30变量定义与内存分配对于变量定义,计算机

32、在运行程序时会相应地安排一个或几对于变量定义,计算机在运行程序时会相应地安排一个或几个字节的内存作为该变量对应的存储空间。个字节的内存作为该变量对应的存储空间。例如例如 :int va=1 , vb ; float vx=3.14 ;1、每个程序在运行时有相应的内存、每个程序在运行时有相应的内存区域;区域;2、初始状态下内存区域的数据区中、初始状态下内存区域的数据区中并没有安排变量,这时数据区各个并没有安排变量,这时数据区各个字节中的数据是计算机随意安排的;字节中的数据是计算机随意安排的;3、对于每个变量定义,计算机在数、对于每个变量定义,计算机在数据区中依次分配对应的内存单元。据区中依次分配

33、对应的内存单元。程序可用的的内存区域程序可用的的内存区域X XX XX XX XX XX XX XX XX XX XX XX XX XX Xva1vbvx3.1431对于前述问题的解答对于前述问题的解答变量有什么作用?变量有什么作用? 程序需要使用和处理的数据很多,因而需要程序需要使用和处理的数据很多,因而需要定义一些变量,用于定义一些变量,用于临时临时存储数据,以供在存储数据,以供在需要的时候取出使用。需要的时候取出使用。如何对变量进行操作?如何对变量进行操作?赋值赋值-把数据送入变量中保存把数据送入变量中保存取值取值-从变量中取出数据从变量中取出数据使用变量/访问变量32对变量赋值是对变量

34、赋值是C C语言最基本的命令之一。语言最基本的命令之一。赋值语句格式:赋值语句格式:变量名变量名 = = 表达式表达式 ;含义含义/ /功能:功能:把表达式(即计算式,把表达式(即计算式,一定有计算结果一定有计算结果)的)的计算结果送到变量所对应的内存中(简述为计算结果送到变量所对应的内存中(简述为“把计算结把计算结果送到变量中果送到变量中”)。)。例如:例如:int va;va = 27*4-56 ;赋 值331 1、语句、语句CC语言中一条完整的命令称为一条语语言中一条完整的命令称为一条语句;赋值语句是句;赋值语句是C C语言中最常用的语句。语言中最常用的语句。2 2、赋值号、赋值号“=”

35、=”具有方向性,把右边的数据送到具有方向性,把右边的数据送到左边指定的存储单元。赋值语句不是方程。方左边指定的存储单元。赋值语句不是方程。方程中的程中的“=”=”表示左右相等,不具有方向性,表示左右相等,不具有方向性,因此方程左右两边可以交换位置。因此方程左右两边可以交换位置。3 3、赋值语句中所使用的变量必须是已经定义的变、赋值语句中所使用的变量必须是已经定义的变量,即量,即“先定义后使用先定义后使用”。4 4、对变量再次赋值时,、对变量再次赋值时,“以新代旧以新代旧”原则,并且原则,并且不需要不需要“倒空倒空”操作。操作。赋值语句34程序中任何需要使用数据的地方如果不直接写数据,程序中任何

36、需要使用数据的地方如果不直接写数据,而是写变量名,则是从指定变量中取出数据。而是写变量名,则是从指定变量中取出数据。对变量的任何使用都必须遵守对变量的任何使用都必须遵守“先定义后使用先定义后使用”的的基本原则。基本原则。例如,有如下一组操作:例如,有如下一组操作:int a = 12 , b = 7 , t ;double x , y ;t = a + b 2 ;x = a + 1 ;y = x / 4.0 ;画内存图,说明操作过程,强调先后次序。画内存图,说明操作过程,强调先后次序。从变量中取值35概念:变量是程序运行过程中存储数据的存储单元。变量是概念:变量是程序运行过程中存储数据的存储单

37、元。变量是存放数据的存放数据的“容器容器”属性:属性:1. 1. 变量名,编写程序时用以区分各个变量变量名,编写程序时用以区分各个变量2. 2. 变量在计算机中的位置,目前只讨论内存中的变量变量在计算机中的位置,目前只讨论内存中的变量3. 3. 变量的类型,决定字节数和存储方式,以及能够进行什变量的类型,决定字节数和存储方式,以及能够进行什么样的计算么样的计算/ /处理处理4. 4. 变量的当前值变量的当前值规则:规则:先定义后使用先定义后使用取值不改变其中存储的数据取值不改变其中存储的数据可以多次赋值可以多次赋值关于变量的小结36关于整数的运算符及运算规则:关于整数的运算符及运算规则:+-*

38、/%关于实数的运算符:关于实数的运算符:+-*/运算符运算符优先级优先级-通俗地说,通俗地说,“先乘除后加减先乘除后加减”改变运算次序的方法改变运算次序的方法- - ( )数值数据的基本运算示例:示例:int a = 6 , b = 4 , c , d ;c = a + b / 3 ;d = ( a + b ) / 3 ;d = d + 2 ;执行了三条赋值语句之后,变量执行了三条赋值语句之后,变量c c、d d的值各是多少?的值各是多少?同类型数据运算同类型数据运算37u 对于对于+ +、- -、* *、/ /等算术运算符:等算术运算符:两边的数据类型不同时,两边的数据类型不同时,“短短长长

39、”、“整整实实”、“floatfloatdouble”double”;u 对于赋值号:变量对应字节数多,而右边表达对于赋值号:变量对应字节数多,而右边表达式计算结果的数据类型对应字节数少,则把计式计算结果的数据类型对应字节数少,则把计算结果进行等值转换后再送到变量中;反之,算结果进行等值转换后再送到变量中;反之,采取采取“截断截断”处理方式。处理方式。自动类型转换示例:示例:int a = 8 , b = 4 , t , k ;float x ;double y ;t = x * 7 / 5 + b % 3 ;k = 7 / 5 * x + b % 5 ;x = a / 5.0 ;y = x

40、* x ;计算机只做计算机只做double型的实数运算型的实数运算38当赋值号左侧的变量占据字节数多而右侧计算结果对应字当赋值号左侧的变量占据字节数多而右侧计算结果对应字节数少时,先进行等值转换,再把结果存放到赋值号左节数少时,先进行等值转换,再把结果存放到赋值号左侧的变量。设有下列变量定义:侧的变量。设有下列变量定义:char dt1char dt1;short int dt2short int dt2;u 把字符数据送到整型变量中,例如把字符数据送到整型变量中,例如dt2 = dt1 dt2 = dt1 ;赋值语句中的转换:短长6565dt1dt1dt2dt20100,00010100,000165650100,00010100,00010000,00000000,0000Q: 符号扩展问题符号扩展问题39赋值语句中的转换:长短把把short intshort int型数据送到型数据送到charchar型

温馨提示

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

评论

0/150

提交评论