c语言-第3章数据类型、运算符与表达式.ppt

上传人:wuy****n92 文档编号:70101767 上传时间:2023-01-16 格式:PPT 页数:122 大小:867KB
返回 下载 相关 举报
c语言-第3章数据类型、运算符与表达式.ppt_第1页
第1页 / 共122页
c语言-第3章数据类型、运算符与表达式.ppt_第2页
第2页 / 共122页
点击查看更多>>
资源描述

《c语言-第3章数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《c语言-第3章数据类型、运算符与表达式.ppt(122页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第三章第三章 数据类型及格式输出、运算符数据类型及格式输出、运算符与表达式与表达式主要内容主要内容 C C的数据类型的数据类型 常量与变量常量与变量 整型数据及格式输出整型数据及格式输出 实型数据及格式输出实型数据及格式输出 字符型数据及格式输出字符型数据及格式输出 字符串及格式输出字符串及格式输出 变量的赋初值变量的赋初值 各类数值型数据混合计算各类数值型数据混合计算 算术运算符和算术表达式算术运算符和算术表达式 赋值运算符和赋值表达式赋值运算符和赋值表达式 逗号运算符和逗号表达式逗号运算符和逗号表达式3.1 3.1 的数据类型的数据类型 整型(整型(int,long,unsigned,un

2、signed longint,long,unsigned,unsigned long)字符型(字符型(charchar)基本类型基本类型 单精度型(单精度型(floatfloat)浮点型浮点型 双精度型(双精度型(doubledouble)枚举类型(枚举类型(enumenum)数据类型数据类型 数组类型(数组类型()构造类型构造类型 结构体类型(结构体类型(structstruct)共用体类型(共用体类型(unionunion)指针类型(指针类型(*)空类型(空类型(voidvoid)3.2 3.2 常量和变量常量和变量一、常量一、常量概念:在程序运行中概念:在程序运行中,其数值不能被改变的其

3、数值不能被改变的量。量。分类:分类:直接常量和符号常量直接常量和符号常量1.1.直接常量:是在程序中直接常量:是在程序中直接引用直接引用的数据。的数据。分为:整型、实型、字符型、字符串分为:整型、实型、字符型、字符串 如:如:3,4.5,S,“china”等等2.2.2.2.符号常量:符号常量:符号常量:符号常量:特点:特点:在程序中不能给它赋值在程序中不能给它赋值。概念:是用标识符来表示一个常量。概念:是用标识符来表示一个常量。定义形式(定义在函数体之外)定义形式(定义在函数体之外):#define#define 标识符标识符 常量数据常量数据例如例如:#define PI 3.14159:

4、#define PI 3.14159在程序预处理时,凡是出现标识符在程序预处理时,凡是出现标识符PIPI的地方的地方都将用数据都将用数据3.141593.14159来替换。来替换。如如:2*2.3*PI:2*2.3*PI 就等价于就等价于 2*2.3*3.14159 2*2.3*3.14159。习惯上,符号常量用大写字母表示。习惯上,符号常量用大写字母表示。define PRICE 30define PRICE 30 void main()void main()int num,total;int num,total;num=10;num=10;total=num*PRICE;total=num

5、*PRICE;printf(“total=%d”,total);printf(“total=%d”,total);符号常量在其作用域内不能再被赋值。符号常量在其作用域内不能再被赋值。使用符号常量的好处:使用符号常量的好处:(1 1)含义清楚;()含义清楚;(2 2)一改全改)一改全改二、变量二、变量变量是指在程序运行中变量是指在程序运行中,其值其值可以被改变可以被改变的量。的量。基本概念:基本概念:变量代表计算机内存中的某一存储空间变量代表计算机内存中的某一存储空间,该存储该存储空间中存放的数据就是变量的值。空间中存放的数据就是变量的值。在同一程序块中,每个变量都有唯一的名字,在同一程序块中,

6、每个变量都有唯一的名字,不能被重复定义。不能被重复定义。int a,b,c;int a,b,c;float x,y;float x,y;char c1,c2;char c1,c2;或或 int c1,c2;int c1,c2;自己设定,满足自己设定,满足标识符的规定。标识符的规定。如:如:int,int,float,charfloat,char“;”不可省不可省定义形式定义形式:类型标识符类型标识符 变量名变量名1,1,变量名变量名2,2,变量名变量名3 3,.;例如:例如:注意事项注意事项:(1)(1)变量必须先定义后使用变量必须先定义后使用(2)(2)每个变量必须被指定为一种类型每个变量必

7、须被指定为一种类型(3)(3)一般习惯上用小写字母表示变量一般习惯上用小写字母表示变量,用大写字母表用大写字母表示符号常量,以示区别。(仅是习惯不是规定)示符号常量,以示区别。(仅是习惯不是规定)三、三、C语言中的标识符语言中的标识符概念:就是用来标识变量名、符号常量名、函概念:就是用来标识变量名、符号常量名、函数名、类型名、文件名等的有效字符序列。数名、类型名、文件名等的有效字符序列。(1)(1)标标识识符符只只能能由由字字母母、数数字字和和下下划划线线三三种种字字符符组组成,且第一个字符必须为字母或下划线。成,且第一个字符必须为字母或下划线。定义规则:定义规则:如:如:_1 year mo

8、nth student_name sum0 _1 year month student_name sum0 M.D.Jones$123#a 3b?c a=b M.D.Jones$123#a 3b?c a=b(2)(2)在在C C语言中,大写字母和小写字母被认为是不同语言中,大写字母和小写字母被认为是不同的字符。因此,的字符。因此,a a和和A A,I I和和i i,SumSum和和sumsum,分别是两,分别是两个不同的标识符。个不同的标识符。一般,变量名用小写字母,与人一般,变量名用小写字母,与人们习惯一致。们习惯一致。(3)Turbo C(3)Turbo C 规定标识符最长为规定标识符最长

9、为3232个字符。个字符。(4)(4)用用户户自自定定义义的的标标识识符符不不能能与与保保留留字字(关关键键字字)同名。同名。关键字关键字概念:就是概念:就是具有特定含义具有特定含义的标识符,用户不的标识符,用户不能用来作自定义标识符。能用来作自定义标识符。C C语言中的关键字较少,由语言中的关键字较少,由ANSIANSI标准推荐的关键标准推荐的关键字有字有3232个。个。常用的有:常用的有:(1)(1)与数据类型有关的(与数据类型有关的(1414):):charintfloatdoublesignedunsignedcharintfloatdoublesignedunsignedshortl

10、ongvoidstructuniontypedefshortlongvoidstructuniontypedefenumsizeofenumsizeof(3)(3)与程序控制结构有关的(与程序控制结构有关的(1212):):dowhileforifelseswitchcasedowhileforifelseswitchcasedefaultgotocontinuedefaultgotocontinue breakreturnbreakreturn见课见课本本P365P365附附录录IIII(2)(2)与存储类别有关的:与存储类别有关的:autoexternregisterstaticautoe

11、xternregisterstatic一、整型常量的表示方法一、整型常量的表示方法整型常量的表示方法:整型常量的表示方法:1.1.十进制整数:十进制整数:123 123、-76-76、0 0 2 2八进制整数(以八进制整数(以0 0开头):开头):076 076、-0253-0253 076 076转换成十进制:转换成十进制:7*8+6 7*8+6 3 3十六制整数(以十六制整数(以0 x0 x开头):开头):0 xa 0 xa、0 x20 0 x20、0 xf4 0 xf4 0 xf4 0 xf4转换成十进制:转换成十进制:15*16+4 15*16+4 3.3 3.3 整型数据整型数据(1

12、)(1)整型变量的分类整型变量的分类基本型,以基本型,以intint表示。表示。长整型,以长整型,以long intlong int表示,或以表示,或以longlong表示。表示。无符号型,其中无符号型又分为无符号整型和无符无符号型,其中无符号型又分为无符号整型和无符号长整型,分别以号长整型,分别以unsigned int unsigned int unsigned longunsigned long表示。表示。默认为有符号型默认为有符号型:(signed)int,(signed)long int:(signed)int,(signed)long int二、整型变量二、整型变量类型类型比特数比

13、特数最小取值范围最小取值范围signed intsigned int1616-2-21515(2(21515-1)-1)即即-3276832767-3276832767signedlongintsignedlongint3232-2-23131(2(23131-1)-1)unsigned intunsigned int16160(20(21616-1)-1)即即065535065535unsigned longintunsigned longint32320(20(23232-1)-1)int x;int x;long y;long y;2000200020012001200220022005

14、2005x xy y内存内存内存地址内存地址2003200320042004所有变量必须先定义所有变量必须先定义再使用!再使用!(2)(2)整数在内存中的存放形式整数在内存中的存放形式整数在内存中以补码表示整数在内存中以补码表示:一个正数的补码和其原码的形式相同;一个正数的补码和其原码的形式相同;负数的补码:将该数的绝对值的原码,按位取反再负数的补码:将该数的绝对值的原码,按位取反再加加1 1。例如:整数例如:整数 8 8 的的1616位(位(2 2字节)编码字节)编码原码:原码:0 00000000 000010000000000 00001000反码:反码:0 00000000 00001

15、0000000000 00001000补码:补码:0 000000000000000 0000100000001000例如:整数例如:整数-8-8 的的1616位(位(2 2字节)编码字节)编码原码:原码:1 10000000 000010000000000 00001000反码:反码:1 11111111 111101111111111 11110111补码:补码:1 111111111111111 1111100011111000内存中存储形式内存中存储形式内存中存储形式内存中存储形式(3)(3)整型变量的定义整型变量的定义类型标识符类型标识符 变量名变量名1,1,变量名变量名2,2,变量

16、名变量名3 3,.;如:如:int a,b;int a,b;(指定变量(指定变量a,ba,b为整型)为整型)unsigned int c,d;(unsigned int c,d;(指定变量指定变量c,dc,d为无符号整型)为无符号整型)long e,f;long e,f;(指定变量(指定变量e,fe,f为长整型)为长整型)(5)(5)整型数据的格式输出整型数据的格式输出例:例:main()int a,b,sum;a=123;b=456;sum=a+b;printf(”a=%d,b=%d,c=%dn”,a,b,sum);结果结果:a=123,b=456,c=579 原样原样原样原样输出输出输出输

17、出格式符与输出项格式符与输出项一一对应一一对应转转义义字字符符(换行)(换行)printfprintf函数的一般格式:函数的一般格式:printfprintf(格式控制字符串格式控制字符串,输出项列表);,输出项列表);必须用英文的双引号必须用英文的双引号括起来。括起来。作用是控制输出项作用是控制输出项的格式和输出一些提示的格式和输出一些提示信息。信息。要输出的表达式。要输出的表达式。常量、变量、运算常量、变量、运算符表达式、函数返回值符表达式、函数返回值等,每个输出项之间用等,每个输出项之间用逗号逗号“,”分隔。分隔。格式控制字符格式控制字符格式控制字符格式控制字符组成组成:普通字符、转义字

18、符、格普通字符、转义字符、格普通字符、转义字符、格普通字符、转义字符、格式说明。式说明。式说明。式说明。普通字符普通字符普通字符普通字符按原样输出,主要用于输出提示信息。按原样输出,主要用于输出提示信息。按原样输出,主要用于输出提示信息。按原样输出,主要用于输出提示信息。:转义字符转义字符转义字符转义字符“”“”起头的转义字符(输出所表示的字符或实起头的转义字符(输出所表示的字符或实起头的转义字符(输出所表示的字符或实起头的转义字符(输出所表示的字符或实现其功能,见现其功能,见现其功能,见现其功能,见P25P25表表表表3-1 3-1,详后述),详后述),详后述),详后述)格式说明格式说明格式

19、说明格式说明由由由由%和和和和 格式字符串格式字符串格式字符串格式字符串 组成:组成:组成:组成:%格式字符串。格式字符串。格式字符串。格式字符串。它它它它表表表表示示示示按按按按规规规规定定定定的的的的格格格格式式式式输输输输出出出出数数数数据据据据,与与与与输输输输出出出出项项项项一一一一一一一一对对对对应。应。应。应。:常用的整型数据的输出格式符:常用的整型数据的输出格式符:%d%d:以有符号十进制数形式输出整数。:以有符号十进制数形式输出整数。%ld%ld:以有符号十进制数形式输出:以有符号十进制数形式输出长长整数。整数。%md%md:以有符号十进制数形式输出整数,至少占:以有符号十进

20、制数形式输出整数,至少占m m位。如果数位。如果数据的位数小于据的位数小于m m,右右对齐,若大于对齐,若大于m m,则按实际位数输出。,则按实际位数输出。例如:例如:printf(%dn,100);printf(%5dn,100););printf(%d%8d,100,100*100);1 0 01 0 0 0 0C语言的整型数据在内存中的存储形式是【】A)原码 B)补码 C)反码 D)ASCII码以下【】组中的标识符都是合法的C语言用户标识符:A)a_10 B)char C)_int D signed 3ab a#b day a一、实型常量的表示方法:一、实型常量的表示方法:十进制形式十进

21、制形式:由数字和小数点组成;由数字和小数点组成;例如例如例如例如:3.4 :3.4 :3.4 :3.4 4.4.4.4.3.3.3.3注意:必须有小数点注意:必须有小数点注意:必须有小数点注意:必须有小数点指数形式:由指数形式:由“十进制小数十进制小数”+“e(”+“e(或或E)”+“E)”+“十进制数整数十进制数整数”三部分组成。三部分组成。例如例如:12.5e-6 :12.5e-6 表示表示12.51012.510-6-6十进制小数十进制小数(尾数部分)(尾数部分)e(e(或或E)E)十进制数整数十进制数整数(指数部分)(指数部分)3.4 3.4 实型数据实型数据注意:注意:e e或或E

22、E的两边必须有数,且其后面必须为整数;的两边必须有数,且其后面必须为整数;如:如:6E0.2 6E0.2 e5 e5 6E 6E 二、实型变量二、实型变量(1)(1)实型变量在内存中的存放形式和变量定义实型变量在内存中的存放形式和变量定义 实型数据在内存中是按照规范化的浮点数形式存实型数据在内存中是按照规范化的浮点数形式存储的。储的。变量定义变量定义:float float 变量名;变量名;double double 变量名;变量名;数符数符尾数尾数指数符号指数符号 指数指数如:如:floatfloat a,b,c;a,b,c;double double a1,a2;a1,a2;a,b,ca,

23、b,c为为floatfloat型变量名。型变量名。a1,a2a1,a2为为doubledouble型变量名。型变量名。(2)(2)实型变量的分类实型变量的分类单精度(单精度(floatfloat)型型双精度(双精度(doubledouble)型)型长双精度(长双精度(long doublelong double)型)型类型类型比特数比特数 有效数字有效数字数值范围数值范围float326710-38 1038double64151610-308 10308 long double128181910-4932104932实例实例float x;float x;double y;double y;

24、20002000200320032004200420112011x xy y内存内存内存地址内存地址(3)(3)实型数据的输出举例实型数据的输出举例P47P47例例3.43.4:main()main()float a,b;float a,b;a=1.23e1;a=1.23e1;b=a+20 b=a+20;printf(%fn,a);printf(%fn,a);printf(%fn,b);printf(%fn,b);运行结果:运行结果:12.300000 12.300000 32.300000 32.300000 TCTC默认浮点数据输默认浮点数据输出出6 6个小数位数个小数位数(4)(4)实型

25、数据的输出格式符(实型数据的输出格式符(P37P37)%f%f:按小数形式输出实型数,整数部分全部输出,默认:按小数形式输出实型数,整数部分全部输出,默认6 6位小数。位小数。%m.nf:%m.nf:按小数形式输出实数,制定保留按小数形式输出实数,制定保留n n位小数,数据位小数,数据总宽度至少为总宽度至少为m m位,位,右右对齐,超过对齐,超过m m位按实际长度输出。位按实际长度输出。例如:例如:printf(“b=%5.2f”,2.3);printf(“b=%5.2f”,2.3);二种表现形式:二种表现形式:用单引号括起来的一个字符;用单引号括起来的一个字符;如:如:AA、1 1、?等。等

26、。只能是英文只能是英文的单引号的单引号3.5 3.5 字符型数据字符型数据一、字符常量一、字符常量注意:注意:a a、aa、”a”a”互不相同,分别为变量、字符互不相同,分别为变量、字符常量、字符串常量。常量、字符串常量。9 9、99、”9”9”互不相同,分别为整型常量、互不相同,分别为整型常量、字符常量、字符串常量。字符常量、字符串常量。用单引号括起来的由右斜杠用单引号括起来的由右斜杠()()引导的转义引导的转义字符,长度为一个字节,其含义不是字符本字符,长度为一个字节,其含义不是字符本身,而是转成新的意义。(身,而是转成新的意义。(P25P25表表3-13-1)如:如:n n 101 10

27、1 x41 x41在统计字符个数在统计字符个数时,只能记为一时,只能记为一个字符个字符转义字符表转义字符表字符形式字符形式功能功能 n n换行换行tt横向跳格横向跳格bb退格退格,将当前位置移到前一列将当前位置移到前一列ff、8 8进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符反斜杠、单引号、双引号反斜杠、单引号、双引号dddddd换页换页 xhh xhh1616进制数表示的进制数表示的ASCIIASCII码对应的字符码对应的字符一个字符的多种表示方法:一个字符的多种表示方法:任一字符都可用任一字符都可用dddddd或或xhhxhh表示,其表示,其中中dddddd为该字符

28、的为该字符的ASCIIASCII码八进制形式、码八进制形式、hhhh为该字符为该字符的的ASCIIASCII码十六进制形式码十六进制形式 例:例:A A、101 101、x41x41均表示均表示A A要避免的错误:要避免的错误:表示单引号:表示单引号:不是不是 表示双引号:表示双引号:不是不是表示斜线:表示斜线:不是不是转义字符应用举例转义字符应用举例printf(n1234nabcdn);1234abcdprintf(n1234n);printf(x41n);1234 AP25例子例子3.1字符的值域:字符的值域:即字符的取值范围。即字符的取值范围。ASCIIASCII字符表中的所有字符,字

29、符表中的所有字符,每个字符型数据在内存中占一个字节,每个字符型数据在内存中占一个字节,包括可显示字符和非显示字符。包括可显示字符和非显示字符。例如例如:char c;:char c;c=A;c=A;c=65;c=65;c=101;c=101;c=x41;c=x41;c=0101;c=0 x41;c=0101;c=0 x41;二、字符变量二、字符变量 字符变量用来存放字符常量字符变量用来存放字符常量,注意一个字注意一个字符变量只能存放一个字符符变量只能存放一个字符。一般以一个字节来存放一个字符,或者一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。说一个字符变量在内存中占一个字

30、节。变量中可存储一个字符或者一个变量中可存储一个字符或者一个0255之间之间的无符号整数。的无符号整数。三、字符数据在内存中的存储形式及使用方法三、字符数据在内存中的存储形式及使用方法 u存储形式存储形式:按按 ASCIIASCII码存储,码存储,不是字符本身,不是字符本身,其形式与整数的存储形式一样其形式与整数的存储形式一样 。u使用方法使用方法:按字符使用:则使用字符本身。按字符使用:则使用字符本身。按数值使用:则使用该字符的按数值使用:则使用该字符的ASCIIASCII码值。码值。例例3.63.6向字符变量赋以整数向字符变量赋以整数 main()main()char a,b;char a

31、,b;a=97;a=97;b=98;b=98;printf(%c,%cn,a,b);printf(%c,%cn,a,b);printf(%d,%dn,a,b);printf(%d,%dn,a,b);运行结果:运行结果:a,b a,b 97,98 97,98例例3.73.7大小写字母的转换大小写字母的转换main()main()char a,b;char a,b;a=a;a=a;b=b;b=b;a=a-32;a=a-32;b=b-32;b=b-32;printf(%c,%cn%d,%dn,a,b,a,b);printf(%c,%cn%d,%dn,a,b,a,b);运行结果:运行结果:A,B A,

32、B 65,66 65,66 四、字符型数据输出格式符四、字符型数据输出格式符c:按字符输出一个字符,但不输出单引号。:按字符输出一个字符,但不输出单引号。mc:按字符输出一个字符,占:按字符输出一个字符,占m位,右对齐。位,右对齐。main()main()char c=a;char c=a;int i=97;int i=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);printf(“%c,%dn”,i,i);a,97a,97注:注:C C语言允许字符变量参与数值运算,用语言允许字符变量参与数值运算,用ASCII

33、ASCII码运算;码运算;大小写字母大小写字母ASCIIASCII码相差码相差3232。五、字符串常量五、字符串常量 字符串常量是用一对双引号括起来的若干字符字符串常量是用一对双引号括起来的若干字符序列序列,隐含以隐含以00结尾。结尾。字符串中字符的个数称为字符串长度。长度为字符串中字符的个数称为字符串长度。长度为0 0的字符串(即一个字符都没有的字符串)称为空串,的字符串(即一个字符都没有的字符串)称为空串,表示为表示为“”“”(一对紧连的双引号)。(一对紧连的双引号)。字符串常量和字符常量区别:字符串常量和字符常量区别:1 1)字符常量由单引号括起来,字符串常量由双引号)字符常量由单引号括

34、起来,字符串常量由双引号括起来。括起来。2 2)字符常量只能是单个字符,字符串常量则可以含)字符常量只能是单个字符,字符串常量则可以含0 0个或多个字符。个或多个字符。3 3)可以把一个字符常量赋予一个字符变量,但不能)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。把一个字符串常量赋予一个字符变量。例如:例如:char c1=A;char c1=A;是可以的,是可以的,但但char c1=A;char c1=A;是不合法的。是不合法的。如:有一个字符串为如:有一个字符串为“CHINA”“CHINA”,则它在内存中的,则它在内存中的实际存储如下所示:实际存储如下所示

35、:最后一个字符最后一个字符00是系统自动加上的,它占用是系统自动加上的,它占用字节而非字节内存空间。字节而非字节内存空间。又如:又如:“abtcd”“abtcd”存储长度为存储长度为6 6个字节。个字节。注意:在源程序中书写字符串常量时,不必加结束注意:在源程序中书写字符串常量时,不必加结束字符字符00,否则画蛇添足。,否则画蛇添足。CHINA04 4)字符常量占一个字节的内存空间。字符串常量占)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加的内存字节数等于字符串中字节数加1 1。增加的一个。增加的一个字节中存放字符字节中存放字符“0”(ASCII“0”(ASCII

36、码为码为0)0)。这是字符串。这是字符串结束的标志,由系统自动加上。结束的标志,由系统自动加上。六、串输出格式符六、串输出格式符%s%s:输出一个字符串。:输出一个字符串。%ms%ms:输出一个字符串,至少占:输出一个字符串,至少占m m列,列,右右对齐,超过对齐,超过按实际输出。按实际输出。例例4.5main()printf(“%s,%7sn”,”CHINA”,”CHINA”);CHINA,CHINA例:例:printf(“%s”,“CHINA”);printf(“CHINA”);把把“CHINA”“CHINA”当作当作一个字符串一个字符串把把“CHINA”“CHINA”当作当作要原样输出的

37、字符要原样输出的字符序列序列3.6 3.6 变量赋初值变量赋初值在说明变量的同时给变量一个初始值。在说明变量的同时给变量一个初始值。变量定义变量定义分配存储空间分配存储空间变量初始化变量初始化分配存储空间的同时存入数据分配存储空间的同时存入数据int a,b;int a,b;a ab b?int a=1,b=2;int a=1,b=2;a ab b1 12 2不确定不确定例:看一看,下列的定义哪些是正确的?例:看一看,下列的定义哪些是正确的?int a=5,b=3;int a=5,b=3;int a=b=c=3;int a=b=c=3;int a,b,c=3;int a,b,c=3;应写为:应

38、写为:int a=3,b=3,c=3;int a=3,b=3,c=3;/*/*只有只有c c 赋了初值赋了初值*/*/初始化不是在编译阶段完成的,而是在程序运初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋予初值的,相当于有一个赋值行时执行本函数时赋予初值的,相当于有一个赋值语句。语句。例如:例如:int a=3;int a=3;相当于:相当于:int a;/*int a;/*指定指定a a为整型变量为整型变量*/*/a=3;/*a=3;/*赋值语句,将赋值语句,将3 3赋予赋予a*/a*/3.7 3.7 各类数值型数据间的混合运算各类数值型数据间的混合运算数据类型的级别:数据类型的

39、级别:低低高高intintunsignedunsignedlonglongdoubledoublefloatfloatcharchar横向的必须先转成纵横向的必须先转成纵向类型才能进行运算向类型才能进行运算运算规律:运算规律:1 1)两个同类型数据运算结果为原类型)两个同类型数据运算结果为原类型。28282 int 302 int 301/2 int 0 1/2 int 0 2 2)两个不同类型的数运算时,系统自动将低级类型转)两个不同类型的数运算时,系统自动将低级类型转换为高级类型,而后进行同类型运算,结果为高级类型。换为高级类型,而后进行同类型运算,结果为高级类型。(表示范围大的为高级类型

40、,详细见(表示范围大的为高级类型,详细见P54P54图图3.103.10)3.2/2 3.2/2 结果为结果为doubledouble型型数据数据28+a 28+a 结果为结果为intint型型数据数据32768*32 32768*32 结果为结果为long long intint型数据型数据3 3)多个数运算时,类型转换要逐步进行。)多个数运算时,类型转换要逐步进行。2/3*6.32/3*6.3结果为?结果为?4.24.20 00.00.03.8 3.8 3.8 3.8 算术运算符与算术表达式算术运算符与算术表达式算术运算符与算术表达式算术运算符与算术表达式三类算术运算符号:三类算术运算符号

41、:1.1.基本算术运算符基本算术运算符 2.2.强制类型转换运算符强制类型转换运算符 3.3.自增、自减运算符自增、自减运算符要求掌握每一种运算符号的要求掌握每一种运算符号的功能、优先级、结合性功能、优先级、结合性 P375 P375 附录附录IIIIII l结合性结合性的含义的含义:当某一运算对象两侧的运算符号当某一运算对象两侧的运算符号优先级相同时,按照结合性所规定的方向进行运优先级相同时,按照结合性所规定的方向进行运算。算。如如a#b#c a#b#c(#代表某一运算符)代表某一运算符)若先运算若先运算a#ba#b,再将其结果与,再将其结果与c c运算,运算,称为左结合性:称为左结合性:从

42、左至右运算从左至右运算若先运算若先运算b#c,b#c,再将再将a a与其结果运算,与其结果运算,则称右结合性:则称右结合性:从右至左运算从右至左运算一、基本算术运算符一、基本算术运算符+:加法:加法-:减法:减法*:乘法:乘法/:除法:除法%:取余或模:取余或模优先级:优先级:(*,/,%)(*,/,%)高于高于(+,-)(+,-)结合性:自左向右结合性:自左向右 P375P375附录附录IIIIII二、算术表达式二、算术表达式二、算术表达式二、算术表达式二、算术表达式二、算术表达式用用算术运算符算术运算符和和括符括符将操作数连接起来的式子将操作数连接起来的式子。优先级:优先级:()*/%*/

43、%+-+-结合性结合性自左向右,与数学上一致。自左向右,与数学上一致。三、强制类型转换运算符三、强制类型转换运算符 (类型名)常量(类型名)常量 (类型名)变量(类型名)变量 (类型名)表达式(类型名)表达式功能:将一个常量、变量或表达式转换成所需类功能:将一个常量、变量或表达式转换成所需类型。型。优先级:属单目运算符,仅低于括号,高于基本优先级:属单目运算符,仅低于括号,高于基本算术运算符。算术运算符。结合性:自右向左结合性:自右向左注意:类型名要用括号括起来注意:类型名要用括号括起来,如果要转换表达式如果要转换表达式的类型,则表达式也要用括号括起来。的类型,则表达式也要用括号括起来。例:例

44、:float(2/3)float(2/3)错误错误 (int)(2.5)%3 (int)(2.5)%3 值为值为2 2 (float)5/2 (float)5/2 值为值为2.5000002.500000四、自增与自减运算符四、自增与自减运算符(重点和难点重点和难点)+i+i,-i-ii i先自增(减)先自增(减)1 1,再使用,再使用i ii+i+,i-i-先使用先使用i i,i i再自增(减)再自增(减)1 1(1)(1)单独使用时单独使用时+i;+i;等等 价价i+;i+;等等 价价i=i+1;i=i+1;(2)j=+i;(2)j=+i;(3)j=i+;(3)j=i+;若若i i的初始值

45、为的初始值为3 3i=4;i=4;j=4;j=4;i=4;i=4;j=3;j=3;结合性:结合性:自右向左自右向左例:例:i=2;j=-i+;i=2;j=-i+;分析:分析:(1 1)+、-、+(正号)、(正号)、-(取负)是同级(取负)是同级运算符,结合方向:运算符,结合方向:自右向左自右向左自右向左自右向左。(2 2)-i+-i+等价于等价于-(i+i+)(3 3)对于括号内的自增运算,又要先使用对于括号内的自增运算,又要先使用i i,再使再使i i增加增加1 1。运算结果:运算结果:i i的值为的值为3 3,j j的值为的值为-2-2。优先级:属单目运算符,仅低于括号类,高于基优先级:属

46、单目运算符,仅低于括号类,高于基本算术运算符。本算术运算符。a=3;printf(“%d”,a+);运算结果:运算结果:输出输出3 3,a a的值为的值为4 4。a=3;printf(“%d”,+a);运算结果:运算结果:输出输出4 4,a a的值为的值为4 4。a=3;printf(“%d”,(a+)%2*(a+2);运算结果:运算结果:输出输出6 6,a a的值为的值为4 4。注意:此时注意:此时a a的的值已经修改为值已经修改为4 4!例:例:3-3-出错出错 -i-i-即即-(i-)-(i-),非,非(-i)-(-i)-a=3;b=-a+;a=3;b=-a+;执行后,执行后,b b的值

47、为的值为-3-3,a a的值的值为为4 4切记:只能用于变量,不能用于常量或表达式切记:只能用于变量,不能用于常量或表达式3.53.53.53.5 赋值运算符、赋值表达式、赋值语赋值运算符、赋值表达式、赋值语赋值运算符、赋值表达式、赋值语赋值运算符、赋值表达式、赋值语句句句句 赋值运算符:赋值运算符:赋值表达式:变量表达式赋值表达式:变量表达式 功能:将功能:将“”右侧表达式的值赋给左侧变量右侧表达式的值赋给左侧变量的的 值,赋值表达式的值是被赋值变量的值。值,赋值表达式的值是被赋值变量的值。赋值语句:变量表达式赋值语句:变量表达式 功能:将功能:将“”右侧表达式的值赋给左侧变量右侧表达式的值

48、赋给左侧变量的值。的值。*所有表达式末尾加所有表达式末尾加“;”后即变为语句后即变为语句赋值表达式举例:赋值表达式举例:(1)x=(y=12)/4y值为值为12,x值为值为3,表达式的值为,表达式的值为3(2)x=y=12/4y值为值为3,x值为值为3,表达式的值为,表达式的值为3 (3)x=(y=12/4)y值为值为3,x值为值为3,表达式的值为,表达式的值为3 (4)(x=y)=12/4该赋值运算符左边不该赋值运算符左边不是变量,而是一个表是变量,而是一个表达式达式一、赋值运算符一、赋值运算符赋值运算符:赋值运算符:优先级:仅优先于最低级的逗号运算符。优先级:仅优先于最低级的逗号运算符。结

49、合性:自右向左结合性:自右向左例:例:c=b=a=5 c=(b=(a=5)c=b=a=5 c=(b=(a=5)注注1 1)赋值运算符号不等于数学中的)赋值运算符号不等于数学中的“等号等号”;”;注注2 2)自增、自减运算实际上也是一个特殊的赋值运算符。)自增、自减运算实际上也是一个特殊的赋值运算符。赋值运算过程赋值运算过程 “变量表达式变量表达式”过程:过程:计算右侧表达式的值计算右侧表达式的值类型转换:若类型转换:若“”两侧变量和表达式的类两侧变量和表达式的类型不一致,将右侧表达式的值类型转换为左侧型不一致,将右侧表达式的值类型转换为左侧变量的类型。变量的类型。将转换好的右侧表达式的值赋给左

50、侧变量。将转换好的右侧表达式的值赋给左侧变量。例:例:main()float a=-32.89;int i;i=a;printf(“%dn”,i);a=i;printf(“%fn”,a);32-32.000000赋值运算小结:赋值运算小结:存储长度长的数据赋给存储长度短的变量,存储长度长的数据赋给存储长度短的变量,可能会丢失数据;可能会丢失数据;存储长度短的数据赋给存储长度长的变量,存储长度短的数据赋给存储长度长的变量,保持数值大小不变;保持数值大小不变;数据赋给存储长度相同的变量,按存储形式数据赋给存储长度相同的变量,按存储形式原样照赋。原样照赋。二、复合赋值运算符二、复合赋值运算符*=、/

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

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com