数据类型00002学习教案.pptx

上传人:一*** 文档编号:71936208 上传时间:2023-02-07 格式:PPTX 页数:75 大小:1.06MB
返回 下载 相关 举报
数据类型00002学习教案.pptx_第1页
第1页 / 共75页
数据类型00002学习教案.pptx_第2页
第2页 / 共75页
点击查看更多>>
资源描述

《数据类型00002学习教案.pptx》由会员分享,可在线阅读,更多相关《数据类型00002学习教案.pptx(75页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据类型数据类型00002第一页,共75页。3.1 C的数据类型的数据类型C语言提供了以下(yxi)一些数据类型。数据类型数据类型数据类型数据类型构造类型构造类型构造类型构造类型指针指针指针指针(zhzhn)(zhzhn)类型类型类型类型空类型空类型空类型空类型(lixng)(lixng)(无值类型(无值类型(无值类型(无值类型(lixng)(lixng))void void枚举类型枚举类型枚举类型枚举类型 enumenumenumenum数组类型数组类型数组类型数组类型结构类型结构类型结构类型结构类型 structstructstructstruct联合类型联合类型联合类型联合类型 unio

2、nunionunionunion基本类型基本类型基本类型基本类型整型整型整型整型 intintintint字符型字符型字符型字符型 charcharcharchar实型(浮点型)实型(浮点型)实型(浮点型)实型(浮点型)单精度实型单精度实型单精度实型单精度实型 floatfloatfloatfloat双精度实型双精度实型双精度实型双精度实型 doubledouble第2页/共75页第1页/共75页第二页,共75页。3.2 3.2 常量常量(chngling)(chngling)与变量与变量3.2.1 常量和符号常量常量和符号常量在程序运行过程中在程序运行过程中,其值不能被改变的量称为常量其值不

3、能被改变的量称为常量常量区分常量区分(qfn)为不同的类型:为不同的类型:整型 100,125,-100,0实型 3.14,0.125,-3.789字符(z f)型 a,b,2字符(z f)串“a”,“ab”,“1232”第3页/共75页第2页/共75页第三页,共75页。例3.1 符号常量(chngling)的使用#define PRICE 30#include void main()int num,total;num=10;total=num*PRICE;printf(total=%dn,total);符号常量符号常量符号常量符号常量(chngling):(chngling):(chngli

4、ng):(chngling):用一个标识符用一个标识符用一个标识符用一个标识符代表一个常量代表一个常量代表一个常量代表一个常量(chngling)(chngling)(chngling)(chngling)。符号常。符号常。符号常。符号常量量量量(chngling)(chngling)(chngling)(chngling)的值在其作用域内不的值在其作用域内不的值在其作用域内不的值在其作用域内不能改变能改变能改变能改变,也不能再被赋值。也不能再被赋值。也不能再被赋值。也不能再被赋值。运行运行(ynxng)(ynxng)结果:结果:total=300total=300说明:说明:说明:说明:程序

5、中用#define命令行定义PRICE代表常量30,此后凡在本文件中出现的PRICE都代表30,可以和常量一样进行运算说明:说明:说明:说明:如再用赋值语句给PRICE赋值是错的 PRICE=40;/*错误,不能给符号常量赋值第4页/共75页第3页/共75页第四页,共75页。3.2 3.2 常量常量(chngling)(chngling)与变量与变量3.2.2变量变量变量的值是可以改变的。变量的值是可以改变的。变量名实际上是一个以一个名字对应、代表一个地址。变量名实际上是一个以一个名字对应、代表一个地址。在对程序编译连接时由编译系统给每一个变量名在对程序编译连接时由编译系统给每一个变量名分配分

6、配(fnpi)对应的内存地址。从变量中取值,实对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。储单元中读取数据。第5页/共75页第4页/共75页第五页,共75页。3.2 3.2 常量常量(chngling)(chngling)与变量与变量 变量命名的规定(gudng):语言规定(gudng)标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。例:sum,_total,month,Student_name,lotus_1_2_,BASIC,li_ling M.D.John,¥123,3D

7、64,ab 第6页/共75页第5页/共75页第六页,共75页。3.2 3.2 常量常量(chngling)(chngling)与变量与变量注意:注意:注意:注意:编译系统将大写字母和小写字母认为是两个不编译系统将大写字母和小写字母认为是两个不编译系统将大写字母和小写字母认为是两个不编译系统将大写字母和小写字母认为是两个不同的字符。同的字符。同的字符。同的字符。建议变量名的长度最好不要超过建议变量名的长度最好不要超过建议变量名的长度最好不要超过建议变量名的长度最好不要超过8 8 8 8个字符。个字符。个字符。个字符。在选择变量名和其它在选择变量名和其它在选择变量名和其它在选择变量名和其它(qt)

8、(qt)(qt)(qt)标识符时,应注意标识符时,应注意标识符时,应注意标识符时,应注意做到做到做到做到“见名知意见名知意见名知意见名知意”,即选有含意的英文单,即选有含意的英文单,即选有含意的英文单,即选有含意的英文单词词词词 (或其缩写)作标识符。(或其缩写)作标识符。(或其缩写)作标识符。(或其缩写)作标识符。要求对所有用到的变量作强制定义,也就是要求对所有用到的变量作强制定义,也就是要求对所有用到的变量作强制定义,也就是要求对所有用到的变量作强制定义,也就是“先定义,后使用先定义,后使用先定义,后使用先定义,后使用”。第7页/共75页第6页/共75页第七页,共75页。3.3 3.3 整

9、型数据整型数据(shj)(shj)3.3.1整型常量的表示方法整型常量的表示方法(1)十进制整数。十进制整数。如:如:123,-456,4。(2)八进制整数。以八进制整数。以0头的数是八进制数。头的数是八进制数。如:如:0123表示八进制数表示八进制数123,等于,等于(dngy)十进制数十进制数83,-011表示八进制数表示八进制数-11,即十进制即十进制数数-9。(3)十六进制整数。以十六进制整数。以0 x开头的数是开头的数是16进制数。进制数。如:如:0 x123,代表,代表16进制数进制数123,等于等于(dngy)十进制数十进制数 291。-0 x12等于等于(dngy)十进制数十进

10、制数18。第8页/共75页第7页/共75页第八页,共75页。3.3 3.3 整型数据整型数据(shj)(shj)3.3.2 整型变量整型变量(1)整型数据在内存整型数据在内存(ni cn)中的存放形式中的存放形式 数据在内存数据在内存(ni cn)中是以二进制形式存中是以二进制形式存放的。放的。如如:int i;/*定义为整型变量定义为整型变量*/i=10;/*给给i赋以整数赋以整数10*/第9页/共75页第8页/共75页第九页,共75页。3.3 3.3 整型数据整型数据(shj)(shj)注意:注意:注意:注意:十进制数十进制数十进制数十进制数10101010的二进制形式为的二进制形式为的二

11、进制形式为的二进制形式为1010101010101010,Turbo Turbo Turbo Turbo C 2.0C 2.0C 2.0C 2.0和和和和Turbo C+3.0Turbo C+3.0Turbo C+3.0Turbo C+3.0为一个整型变量为一个整型变量为一个整型变量为一个整型变量在内存中分配在内存中分配在内存中分配在内存中分配2 2 2 2个字节的存储单元个字节的存储单元个字节的存储单元个字节的存储单元(不同不同不同不同的编译系统为整型数据分配的字节数是的编译系统为整型数据分配的字节数是的编译系统为整型数据分配的字节数是的编译系统为整型数据分配的字节数是不相同的,不相同的,不

12、相同的,不相同的,VC+6.0VC+6.0VC+6.0VC+6.0则分配则分配则分配则分配4 4 4 4个字节)。个字节)。个字节)。个字节)。数值是以补码数值是以补码数值是以补码数值是以补码(b m)(complement)(b m)(complement)(b m)(complement)(b m)(complement)表表表表示的。示的。示的。示的。第10页/共75页第9页/共75页第十页,共75页。3.3 3.3 整型数据整型数据(shj)(shj)(2)(2)整型变量整型变量(binling)(binling)的分类的分类共六种共六种有符号(fho)基本整型有符号(fho)短整型有

13、符号(fho)长整型无符号(fho)基本整型无符号(fho)短整型无符号(fho)长整型(signed)int(signed)short(int)(signed)long(int)unsigned intunsigned short(int)unsigned long(int)注意:注意:括号表示其中的内容是可选的.第11页/共75页第10页/共75页第十一页,共75页。3.3 3.3 整型数据整型数据(shj)(shj)整数类型的有关(yugun)数据:类型类型 类型说明符类型说明符 长度长度 数的范围数的范围(fnwi)(fnwi)基本型基本型 int 2 int 2字节字节 -32768

14、 -327683276732767 短整型短整型 short 2 short 2字节字节 -215 -215215-1 215-1 长整型长整型 long 4 long 4字节字节 -231 -231231-1231-1 无符号整型无符号整型 unsigned 2 unsigned 2字节字节 0 06553565535 无符号短整型无符号短整型 unsigned short 2 unsigned short 2字节字节 0 06553565535 无符号长整型无符号长整型 unsigned long 4 unsigned long 4字节字节 0 0(232-1232-1)第12页/共75页

15、第11页/共75页第十二页,共75页。3.3 3.3 整型数据整型数据(shj)(shj)例如:整数13在内存中实际(shj)存放的情况:第13页/共75页第12页/共75页第十三页,共75页。3.3 整型数据(shj)(3)(3)整型变量整型变量(binling)(binling)的定义的定义:规定在程序中所有用到的变量规定在程序中所有用到的变量(binling)(binling)都必须在程序中定义,即都必须在程序中定义,即“强制类型定义强制类型定义”。例如例如:int a,b int a,b(指定变量(指定变量(binling)(binling)、为整、为整型)型)unsigned sho

16、rt c,d;unsigned short c,d;(指定变量(指定变量(binling)(binling)、为无、为无符号短整型)符号短整型)long e,f;(long e,f;(指定变量指定变量(binling)(binling)、为、为长整型)长整型)第14页/共75页第13页/共75页第十四页,共75页。例3.2 整型变量的定义与使用(shyng)#include void main()int a,b,c,d;/*指定、为整型变量*unsigned;*指定为无符号整型变量*12;-24;10;printf(au=d,bu=dn,c,d);说明:说明:说明:说明:可以看到不同种类可以看

17、到不同种类可以看到不同种类可以看到不同种类(zhngli)(zhngli)(zhngli)(zhngli)的整的整的整的整型数据可以进行算术运算型数据可以进行算术运算型数据可以进行算术运算型数据可以进行算术运算 运行运行(ynxng)(ynxng)结果:结果:,第15页/共75页第14页/共75页第十五页,共75页。例3.3 整型数据(shj)的溢出#include void main()int a,b;a=32767;b=a+1;printf(“%d,%dn”,a,b);说明:数值是以补码表示的。一个整型变量说明:数值是以补码表示的。一个整型变量说明:数值是以补码表示的。一个整型变量说明:数

18、值是以补码表示的。一个整型变量(binling)(binling)(binling)(binling)只能容纳只能容纳只能容纳只能容纳-32768-32768-32768-3276832767327673276732767范围内范围内范围内范围内的数,无法表示大于的数,无法表示大于的数,无法表示大于的数,无法表示大于32767327673276732767或小于或小于或小于或小于-32768-32768-32768-32768的数。的数。的数。的数。遇此情况就发生遇此情况就发生遇此情况就发生遇此情况就发生“溢出溢出溢出溢出”。运行运行(ynxng)(ynxng)结果:结果:32767,-327

19、6832767,-32768第16页/共75页第15页/共75页第十六页,共75页。3.3 3.3 整型数据整型数据(shj)(shj)3.3.3 整型常量的类型整型常量的类型(1)一个整数,如果其值在一个整数,如果其值在-32768+32767范范围围(fnwi)内,认为它是内,认为它是int型,它可以赋值型,它可以赋值给给int型和型和long int型变量。型变量。(2)一个整数,如果其值超过了上述范围一个整数,如果其值超过了上述范围(fnwi),而在,而在-2147483637+2147483647范围范围(fnwi)内,则认为它是内,则认为它是为长整型。可以将它赋值给一个为长整型。可

20、以将它赋值给一个long int型型变量。变量。第17页/共75页第16页/共75页第十七页,共75页。3.3 3.3 整型数据整型数据(shj)(shj)(3)如果所用的C版本(如Turbo C)分配给short int与int型数据在内存中占据的长度相同(xin tn),则它的表数范围与int型相同(xin tn)。因此一个int型的常量同时也是一个short int型常量,可以赋给int型或short int型变量。第18页/共75页第17页/共75页第十八页,共75页。3.3 整型数据(shj)(4)一个整常量后面加一个字母u或U,认为是unsigned int型,如12345u,在内

21、存中按unsigned int规定的方式存放(存储单元中最高位不作为符号位,而用来存储数据)。如果写成-12345u,则先将-12345转换成其补码(b m)53191,然后按无符号数存储。(5)在一个整常量后面加一个字母l或L,则认为是long int型常量。第19页/共75页第18页/共75页第十九页,共75页。3.4 3.4 浮点型数据浮点型数据(shj)(shj)3.4.13.4.1浮点型常量的表示浮点型常量的表示(biosh)(biosh)方法方法两种表两种表示形式示形式(xngsh)小数小数指数指数0.123,123.,123.00.123,123.,123.03 3e-3e-3注

22、意注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数1e31e31e31e3、1.8e-31.8e-31.8e-31.8e-3、-123e-6-123e-6-123e-6-123e-6、e3e3e3e3、2.1e3.52.1e3.52.1e3.52.1e3.5、.e3.e3.e3.e3、e e e e 第20页/共75页第19页/共75页第二十页,共75页。3.4 3.4 浮点型数据浮点型数据(shj)(shj)规范化的指数形式:规范化的指数形式:在字母在字母e e(或(或E E)之前的小数部分)之前的小数部分(b fen)(b fen)中,小中,小数点左边数点左边应有一位(且只能有

23、一位)非零的数字应有一位(且只能有一位)非零的数字.例如例如:123.456:123.456可以表示为:可以表示为:123.456e0,12.3456e1,1.23456e2,123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e0.123456e3,0.0123456e4,0.00123456e 其中的其中的1.23456e31.23456e3称为称为“规范化的指数形式规范化的指数形式”。第21页/共75页第20页/共75页第二十一页,共75页。3.4 浮点型数据(shj)3.4.2 浮点型变量浮点型变量(1)浮点型数

24、据在内存中的存放形式浮点型数据在内存中的存放形式(xngsh)一个浮点型数据一般在内存中占一个浮点型数据一般在内存中占4个字节个字节(32位位)。与整型数据的存储方式不同,浮。与整型数据的存储方式不同,浮点型数据是按照指数形式点型数据是按照指数形式(xngsh)存储的。存储的。系统把一个浮点型数据分成小数部分和指系统把一个浮点型数据分成小数部分和指数部分,分别存放。指数部分采用规范化数部分,分别存放。指数部分采用规范化的指数形式的指数形式(xngsh)。第22页/共75页第21页/共75页第二十二页,共75页。类型类型 位数位数 数的范围数的范围 有效数字有效数字float float 32

25、32 10 10-37-37 101038 38 6 6 7 7 位位doubledouble型型 6464 10 10-307-307 1010308308 15 15 1616位位long double 128 10long double 128 10-4931-4931 10104932 4932 1818 1919位位 3.4 浮点型数据(shj)(2)(2)浮点型变量的分类浮点型变量的分类(fn li)(fn li)浮点型变量分为单精度(浮点型变量分为单精度(floatfloat型)、双精度型)、双精度(doubledouble型)和长双精度型(型)和长双精度型(long doubl

26、elong double)三类形)三类形式。式。(3)浮点型数据浮点型数据(shj)的舍入误差的舍入误差 p47第23页/共75页第22页/共75页第二十三页,共75页。例:例:例:例:main()main()main()main()float r,c;/double r,c;float r,c;/double r,c;float r,c;/double r,c;float r,c;/double r,c;r=5;r=5;r=5;r=5;c=2*3.1415926*r;c=2*3.1415926*r;c=2*3.1415926*r;c=2*3.1415926*r;printf(“%f”,c);

27、printf(“%f”,c);printf(“%f”,c);printf(“%f”,c);上机观察上机观察上机观察上机观察(gunch)p47(gunch)p47(gunch)p47(gunch)p47第24页/共75页第23页/共75页第二十四页,共75页。3.4 浮点型数据(shj)3.4.3 浮点型常量的类型浮点型常量的类型 C编译系统将浮点型常量作为双精度来处理。编译系统将浮点型常量作为双精度来处理。例如:例如:f=2.45678*4523.65 系统先把系统先把2.45678和和4523.65作为双精度数,作为双精度数,然后进行相乘的运算,得到的乘也是一个双精然后进行相乘的运算,得到

28、的乘也是一个双精度数。最后取其前度数。最后取其前7位赋给浮点型变量位赋给浮点型变量f。如是。如是(r sh)在数的后面加字母在数的后面加字母f或或F(如(如1.65f,654.87F),这样编译系统就会把它们按单精),这样编译系统就会把它们按单精度(度(32位)处理。位)处理。第25页/共75页第24页/共75页第二十五页,共75页。3.5 字符(z f)型数据 3.5.1 字符常量字符常量(1)用单引号包含的一个用单引号包含的一个(y)字符是字字符是字符型常量符型常量(2)只能包含一个只能包含一个(y)字符字符a a,A A,1 1abcabc、“a a”第26页/共75页第25页/共75页

29、第二十六页,共75页。3.5 字符(z f)型数据 有些以“”开头(ki tu)的特殊字符称为转义字符n n 换行换行t t 横向跳格横向跳格r r 回车回车 反斜杠反斜杠ddd 1ddd 1到到3 3位八进制数字所代表位八进制数字所代表(dibio)(dibio)的字符的字符xhh 1xhh 1到到2 2位十六进制数字所代表位十六进制数字所代表(dibio)(dibio)的字的字符符第27页/共75页第26页/共75页第二十七页,共75页。例3.5 转义字符的使用(shyng)#include void main()printf(ab ct derftgn);printf(htibbj kn

30、);上机测试 p49打印机上的显示打印机上的显示(xinsh)(xinsh)结果:结果:fab c gde fab c gde h jik h jik显示屏上的运行显示屏上的运行(ynxng)(ynxng)结果:结果:f gde f gde j k j k第28页/共75页第27页/共75页第二十八页,共75页。3.5 字符(z f)型数据 3.5.2字符变量字符变量(binling)字字符符型型变变量量(binling)用用来来存存放放字字符符常常量量,注意只能放一个字符。注意只能放一个字符。字字符符变变量量(binling)的的定定义义形形式式如如下下:char c1,c2;在本函数中可以

31、用下面语句对在本函数中可以用下面语句对c1,c2赋值:赋值:c1a;c2 b;一一个个字字符符变变量量(binling)在在内内存存中中占占一一个个字节。字节。第29页/共75页第28页/共75页第二十九页,共75页。3.5 3.5 字符字符(z f)(z f)型数据型数据 3.5.3 字符数据在内存中的存储形式及其使用方法字符数据在内存中的存储形式及其使用方法(fngf)一个字符常量存放到一个字符变量中,是将该字符的相应一个字符常量存放到一个字符变量中,是将该字符的相应的的ASCII代码放到存储单元中。这样使字符型数据和整代码放到存储单元中。这样使字符型数据和整型数据之间可以通用。型数据之间

32、可以通用。注意:一个(y)字符数据既可以以字符形式输出,也可以以整数形式输出。第30页/共75页第29页/共75页第三十页,共75页。一个字符(z f)数据既可以作字符(z f)用,也可以作整数用(取其ASCII代码)。如:32+a相当于 32+97 若 int x;char c;则 x=a;c=97;x=97;c=a;都允许 例3.6 向字符(z f)变量赋以整数。例3.7 大小写字母的转换 第31页/共75页第30页/共75页第三十一页,共75页。3.5 字符(z f)型数据3.5.4字符串常量字符串常量字符串常量是一对双撇号括起来的字符序列字符串常量是一对双撇号括起来的字符序列.合法的字

33、符串常量合法的字符串常量:“How do you do.”,“CHINA”,“a”,“$123.45”是字符常量,是字符常量,”是字符串常量,二者是字符串常量,二者不同。不同。可以输出可以输出(shch)一个字符串,如一个字符串,如printf(“How do you do.”);第32页/共75页第31页/共75页第三十二页,共75页。规定:以字符作为字符串结束标志(biozh),以便系统据此判断字符串是否结束,空格符也是一个字符。如:如果有一个(y)字符串常量”,实际上在内存中是:CHINA0 它占内存单元不是个字符,而是个字符,最后(zuhu)一个字符为。但在输出时不输出。3.5 字符型

34、数据字符型数据第33页/共75页第32页/共75页第三十三页,共75页。3.6 变量(binling)赋初值(1)语言(yyn)允许在定义变量的同时使变量初始化如:int a=3;/指定为整型变量,初值为 float f=3.56;/指定为浮点型变量,初值为.56 char c=a;/指定为字符变量,初值为a /若 char c=”a”;用法错误第34页/共75页第33页/共75页第三十四页,共75页。3.6 变量(binling)赋初值(2)可以使被定义的变量的一部分赋初值。如:int a,b,c=5;表示指定(zhdng)、为整型变量,但只对初始化,c的初值为(3)如果对几个变量赋以同一个

35、初值,应写成:int a=3,b=3,c=3;表示、的初值都是。不能写成 int a=b=c=3;/原因p53-54 /上机测试,结合报错分析原因 注意(zh y):初始化不是在编译阶段完成的而是在程序运行时执行本函数时赋初值的,相当于有一个赋值语句。第35页/共75页第34页/共75页第三十五页,共75页。3.7 各类数值型数据间的混合(hnh)运算 混合运算:整型(包括(boku)int,short,long)、浮点型(包括(boku)float,double)可以混合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算.说明:这种类型转换是由系统(xtng)自动进行的。第3

36、6页/共75页第35页/共75页第三十六页,共75页。3.8 算术(sunsh)运算符和算术(sunsh)表达式3.8.1 运算符简介运算符简介 的运算符有以下几类:的运算符有以下几类:(1)算术算术(sunsh)运算符运算符(+-*/%)(2)关系运算符关系运算符(=!=)(3)逻辑运算符逻辑运算符(!(!&|)(4)位运算符位运算符 (|)(5)赋值运算符赋值运算符(及其扩展赋值运算符)(及其扩展赋值运算符)(6)条件运算符条件运算符(?:)(?:)(7)逗号运算符逗号运算符 (,),)第37页/共75页第36页/共75页第三十七页,共75页。3.8 算术(sunsh)运算符和算术(sun

37、sh)表达式(8)指针运算符(*和)(9)求字节数运算符()(10)强制类型(lixng)转换运算符((类型(lixng)))(11)分量运算符(-)(12)下标运算符()(13)其他(如函数调用运算符()第38页/共75页第37页/共75页第三十八页,共75页。3.8 算术(sunsh)运算符和算术(sunsh)表达式3.8.2 算术运算符和算术表达式算术运算符和算术表达式(1)基本的算术运算符基本的算术运算符:(加法(加法(jif)运算符,或正值运算符。如运算符,或正值运算符。如:、)、)(减法运算符,或负值运算符。如(减法运算符,或负值运算符。如:、)*(乘法运算符。如(乘法运算符。如:

38、*)(除法运算符。如(除法运算符。如:)(模运算符,或称求余运算符,两侧均应为(模运算符,或称求余运算符,两侧均应为整型数据,如整型数据,如:的值为)。的值为)。第39页/共75页第38页/共75页第三十九页,共75页。3.8 算术(sunsh)运算符和算术(sunsh)表达式(2)(2)算术表达式和运算符的优先级与结合性基本的算术表达式和运算符的优先级与结合性基本的算术运算符算术运算符:用算术运算符和括号将运算对象用算术运算符和括号将运算对象(也称操作数)也称操作数)连接起来的、符合连接起来的、符合(fh)(fh)语法规则的式子,语法规则的式子,称为算术表达式。运算对象包括常量、变称为算术表

39、达式。运算对象包括常量、变量、函数等。量、函数等。例如例如:*.5.5aa 是一个合法的表达式是一个合法的表达式第40页/共75页第39页/共75页第四十页,共75页。语言规定了运算符的优先级和结合性。在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。规定了各种运算符的结合方向(fngxing)(结合性)算术运算符的结合方向(fngxing)为“自左至右”,即先左后右。3.8 算术(sunsh)运算符和算术(sunsh)表达式 如:如:a-b+c b与与-结合结合(jih)是从左到右,称是从左到右,称“左结合左结合(jih)性性”。b与与+结合结合(jih)是从右到左,称是从

40、右到左,称“右结合右结合(jih)性性”。第41页/共75页第40页/共75页第四十一页,共75页。3.8 算术(sunsh)运算符和算术(sunsh)表达式(3)(3)强制强制(qingzh)(qingzh)类型转换运算符类型转换运算符 可以利用强制可以利用强制(qingzh)(qingzh)类型转换运算符将一个表类型转换运算符将一个表达式转换成达式转换成所需类型。所需类型。一般形式一般形式:(类型名)(表达式)(类型名)(表达式)例如:例如:(double)(double)将转换成将转换成doubledouble类型类型(int)(x+y)(int)(x+y)将将x+yx+y的值转换成整型

41、的值转换成整型(float)(float)(5%35%3)将将5%35%3的值转换成的值转换成floatfloat型型第42页/共75页第41页/共75页第四十二页,共75页。例3.8 强制(qingzh)类型转换。#include void();();printf(x=%f,i=%dn,x,i);说明:当自动类型转换不能实现目的时,可以用强制类说明:当自动类型转换不能实现目的时,可以用强制类说明:当自动类型转换不能实现目的时,可以用强制类说明:当自动类型转换不能实现目的时,可以用强制类型转换。就此题而言有无型转换。就此题而言有无型转换。就此题而言有无型转换。就此题而言有无(yu w)(yu

42、w)(yu w)(yu w)(intintintint)结果一样,)结果一样,)结果一样,)结果一样,有类型不匹配的警告。若改为有类型不匹配的警告。若改为有类型不匹配的警告。若改为有类型不匹配的警告。若改为x%2x%2x%2x%2则必须进行强制类型则必须进行强制类型则必须进行强制类型则必须进行强制类型转换,否则报错。转换,否则报错。转换,否则报错。转换,否则报错。运行运行(ynxng)(ynxng)结果:结果:x x3.6000003.600000,i=3 i=3第43页/共75页第42页/共75页第四十三页,共75页。3.8 算术(sunsh)运算符和算术(sunsh)表达式(4)(4)自增

43、、自减运算符自增、自减运算符 作用作用(zuyng)(zuyng)是使变量的值增或减是使变量的值增或减如:如:,在使用之前,先使的值加(减)在使用之前,先使的值加(减),在使用之后,使的值加(减)在使用之后,使的值加(减)第44页/共75页第43页/共75页第四十四页,共75页。3.8 算术(sunsh)运算符和算术(sunsh)表达式i+i+与与+i+i的区别的区别(qbi)(qbi):是先执行后,再使用的值;是先执行后,再使用的值;是先使用的值后,再执行。是先使用的值后,再执行。例如:例如:;i i的值先变成的值先变成4,4,再赋给再赋给,j,j的值均为的值均为 ;先将先将 i i的值的值

44、3 3赋给赋给,的值为,然后变为的值为,然后变为第45页/共75页第44页/共75页第四十五页,共75页。3.8 算术(sunsh)运算符和算术(sunsh)表达式注意:注意:(1)自增运算符(),自减运算符(自增运算符(),自减运算符(),只能用于变量,而不能用于常),只能用于变量,而不能用于常量量(chngling)或表达式,或表达式,(2)和的结合方向是和的结合方向是“自右至左自右至左”。自增(减)运算符常用于循环语句中使循环变量(binling)自动加。也用于指针变量(binling),使指针指向下一个地址第46页/共75页第45页/共75页第四十六页,共75页。两种特殊情况:两种特殊

45、情况:两种特殊情况:两种特殊情况:k=(i+)+(i+)+(i+)k=(i+)+(i+)+(i+)k=(i+)+(i+)+(i+)k=(i+)+(i+)+(i+)i+j i+j i+j i+j 是是是是 i+(+j)i+(+j)i+(+j)i+(+j)还是还是还是还是(i+)+j?(i+)+j?(i+)+j?(i+)+j?i+i+i+i+虽虽虽虽然然然然与与与与i=i+1i=i+1i=i+1i=i+1等等等等效效效效,但但但但使使使使用用用用自自自自增增增增自自自自减减减减运运运运算算算算符符符符的的的的代代代代码码码码优优优优化化化化程程程程度度度度好好好好,因因因因而而而而(yn(yn(y

46、n(yn r)r)r)r)经经经经常常常常使使使使用;但用时需特别小心。用;但用时需特别小心。用;但用时需特别小心。用;但用时需特别小心。第47页/共75页第46页/共75页第四十七页,共75页。3.8 算术(sunsh)运算符和算术(sunsh)表达式(5)(5)有关表达式使用中的问题说明有关表达式使用中的问题说明 ANSI C ANSI C并没有具体规定表达式中的子表达式的求值并没有具体规定表达式中的子表达式的求值顺序,允许各编译系统自己安排。顺序,允许各编译系统自己安排。例如:对表达式例如:对表达式 a=f1()+f2()a=f1()+f2()并不是所有的编译系统都先调用并不是所有的编译

47、系统都先调用(dioyng)f1()(dioyng)f1(),然后然后调用调用(dioyng)f2()(dioyng)f2()。在有的情况下结果可能不同。在有的情况下结果可能不同。有时会出有时会出现一些令人容易搞混的问题,因此务必要小心谨慎。现一些令人容易搞混的问题,因此务必要小心谨慎。第48页/共75页第47页/共75页第四十八页,共75页。3.8 算术(sunsh)运算符和算术(sunsh)表达式语言中有的运算符为一个字符,有的运算符由两个字符组成,为避免误解,最好采取大家(dji)都能理解的写法。例如:不要写成i+j的形式,而应写成 (i+)+j的形式 第49页/共75页第48页/共75

48、页第四十九页,共75页。3.8 算术(sunsh)运算符和算术(sunsh)表达式在调用函数时,实参数的求值顺序,标准并无统一规定。例如(lr):的初值为,如果有下面的函数调用:printf(,i+)在有的系统中,从左至右求值,输出“,”。在多数系统中对函数参数的求值顺序是自右而左,函数输出的是“,”。以上这种写法不宜提倡,最好改写成 j=i+;printf(%d,%d,j,i)不要写出别人看不懂的也不知道系统会怎样(znyng)执行程序第50页/共75页第49页/共75页第五十页,共75页。3.9 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式(1)(1)赋值运算符赋值运算符 赋值符号

49、赋值符号(fho)“(fho)“”就是赋值运算符,它的作就是赋值运算符,它的作用是用是将一个数据赋给一个变量。如将一个数据赋给一个变量。如“”的作用的作用是执行一次赋值操作(或称赋值运算)。把常是执行一次赋值操作(或称赋值运算)。把常量赋给变量。也可以将一个表达式的值赋量赋给变量。也可以将一个表达式的值赋给一个变量。给一个变量。第51页/共75页第50页/共75页第五十一页,共75页。3.9 3.9 赋值运算符和赋值表达式 (2)(2)类型转换类型转换 如果赋值运算符两侧的类型不一致,但都如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型是数值型或字符型时,在赋值时要进

50、行类型转换。转换。将浮点型数据(包括将浮点型数据(包括(boku)(boku)单、双精度)赋给整单、双精度)赋给整型变量时,舍弃浮点数的小数部分。型变量时,舍弃浮点数的小数部分。如如:为整型变量,执行为整型变量,执行“i=3.56”“i=3.56”的结果是使的结果是使的值为,以整数形式存储在整型变量中的值为,以整数形式存储在整型变量中.第52页/共75页第51页/共75页第五十二页,共75页。3.9 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式 将整型数据将整型数据(shj)(shj)赋给单、双精度变量时,数值不赋给单、双精度变量时,数值不变,变,但以浮点数形式存储到变量中但以浮点数形

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理工具

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁