第三章数据类型PPT讲稿.ppt

上传人:石*** 文档编号:77769389 上传时间:2023-03-16 格式:PPT 页数:52 大小:2.65MB
返回 下载 相关 举报
第三章数据类型PPT讲稿.ppt_第1页
第1页 / 共52页
第三章数据类型PPT讲稿.ppt_第2页
第2页 / 共52页
点击查看更多>>
资源描述

《第三章数据类型PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第三章数据类型PPT讲稿.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第三章数据类型第1页,共52页,编辑于2022年,星期二第三章第三章第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式数据类型、运算符与表达式数据类型、运算符与表达式3.1 基本概念基本概念1 1、C C语言程序的组成特点语言程序的组成特点v 一个一个C C源程序由函数构成,源程序由函数构成,其中至少包含一个主函数(其中至少包含一个主函数(mainmain函数)。函数)。v C C程序总是由程序总是由mainmain函数开始执行。函数开始执行。v分号分号“;”是是C C语言的一部分。语言的一部分。vC C程序书写格式自由,一行内可以写多条语句,且语句中的空格和回程序书写格式自由,一

2、行内可以写多条语句,且语句中的空格和回车符均可忽略不计。车符均可忽略不计。v程序的注释部分应括在程序的注释部分应括在/*/*之间;和之间;和*之间不允许留有空格;之间不允许留有空格;注释都分允许出现在程序中的任何位置上。注释都分允许出现在程序中的任何位置上。第2页,共52页,编辑于2022年,星期二2、标识符、标识符 C C语言的标识将可分为以下三类:语言的标识将可分为以下三类:一、关键字一、关键字 C C语言共有语言共有3232个关用字;每个关键字在个关用字;每个关键字在C C程序中都代表着某一固定含意,所程序中都代表着某一固定含意,所有关键字都要用小写英文字母表示,且这些关键字都不允许作为

3、用户标识将使有关键字都要用小写英文字母表示,且这些关键字都不允许作为用户标识将使用。用。C C语言中的关键字可见书语言中的关键字可见书.二、预定义标识符二、预定义标识符 这些标识符在这些标识符在C C而言中都具有特定含意,如而言中都具有特定含意,如C C语言提供的库函数的名字语言提供的库函数的名字和预编译处理命令。和预编译处理命令。C C语言语法允许用户把这类标识用作其它用途,但这将使语言语法允许用户把这类标识用作其它用途,但这将使这些预定义标识符失去系统规定的原意。鉴于目前各种计算机系统的这些预定义标识符失去系统规定的原意。鉴于目前各种计算机系统的C C语言已语言已经把这类标识符作为统一的库

4、函数名或预编译处理中的专用命令名使经把这类标识符作为统一的库函数名或预编译处理中的专用命令名使用,因此为了避免误解,建议用户不要把这些预定义标识符作它用或用,因此为了避免误解,建议用户不要把这些预定义标识符作它用或将它们重新定义。将它们重新定义。第3页,共52页,编辑于2022年,星期二2、标识符、标识符 三、用户标识符三、用户标识符 用户可以根据需要对用户可以根据需要对C C程序中用到的变量、符号常量、自己的函数程序中用到的变量、符号常量、自己的函数或文件指针进行命名,形成用户标识符。这类标识符的构成规则如下:或文件指针进行命名,形成用户标识符。这类标识符的构成规则如下:v由英文字母、数字、

5、下划线组成;且第一个字符不能是数字,必须是由英文字母、数字、下划线组成;且第一个字符不能是数字,必须是字母或下划线。字母或下划线。如:如:sum,average,class,student_namesum,average,class,student_name M.D,$123.#33,3D64,a b ERROR!v大、小写英文字母的含意不同。大、小写英文字母的含意不同。v标识符中所允许包含的字符个数随不同的标识符中所允许包含的字符个数随不同的C C编译系统而有所不同,通常可以编译系统而有所不同,通常可以识别前面识别前面6 6个字符。个字符。v用户取名时,应当尽量遵循用户取名时,应当尽量遵循“

6、简洁明了简洁明了”和和“见名知意见名知意”的原则。的原则。注意注意:大写字母和小写字母被认为是两个不同的字符。因大写字母和小写字母被认为是两个不同的字符。因此,此,sumsum和和SUMSUM是两个不同的变量名。习惯上,变量名用小写字母表示,以是两个不同的变量名。习惯上,变量名用小写字母表示,以增加可读性。增加可读性。第4页,共52页,编辑于2022年,星期二3 3、C C语言的数据类型语言的数据类型 整型整型 字符型字符型 单精度单精度基本类型基本类型 实型实型 枚举类型枚举类型 双精度双精度 数据类型数据类型 数组类型数组类型构造类型构造类型 结构体类型结构体类型 共用体类型共用体类型指针

7、类型指针类型空类型空类型第5页,共52页,编辑于2022年,星期二3.2 常量(常量(Constant)常量的概念常量的概念 在程序中不能改变的量称为在程序中不能改变的量称为常量常量。常量的类型由数据的外部表。常量的类型由数据的外部表现形式确定。现形式确定。常量区分为不同的类型常量区分为不同的类型,如、等为整型常量,如、等为整型常量,4.6,-1.234.6,-1.23等为实型常量,等为实型常量,a,da,d为字符常量,一般从其字面形式即可判别,也可为字符常量,一般从其字面形式即可判别,也可以用一个标识符代表一个常量。以用一个标识符代表一个常量。#define PI 3.1415926#def

8、ine PI 3.1415926main()main()/*/*test1.c*/test1.c*/float s,r,l;float s,r,l;/*const float PI=3.1415926*/*const float PI=3.1415926*/r=10.;l=2.*PI*r;s=PI*r*r;r=10.;l=2.*PI*r;s=PI*r*r;printf(l=%f s=%fn,l,s);printf(l=%f s=%fn,l,s);printf(PI=%fn,PI);printf(PI=%fn,PI);第6页,共52页,编辑于2022年,星期二2、符号常量、符号常量概念:概念:用

9、一个标识符代表一个常量。用一个标识符代表一个常量。例:例:#define PRICE 30main()/*test2.c */int num,total;num=10;total=num*PRICE;printf(total=%d,total);第7页,共52页,编辑于2022年,星期二3.3 变量(变量(Variable)变量的概念变量的概念 变量是在程序中可以改变的量,变量具有三个特征:变量是在程序中可以改变的量,变量具有三个特征:变量有名,用标识符命名;变量有名,用标识符命名;变量有类型;变量有类型;在程序中可以改变。在程序中可以改变。变量变量对应于内存中对应于内存中某一地址下的几个单元

10、,某一地址下的几个单元,变量名作为程序引变量名作为程序引用变量的标志。变量的类型确定了变量在内存中所占单元的数量及用变量的标志。变量的类型确定了变量在内存中所占单元的数量及其表示的方式。变量的地址可以通过其表示的方式。变量的地址可以通过&运算获得。运算获得。内存内存int a;a变量的引用标志变量的引用标志&a对应对应a的地址。的地址。整型变量占整型变量占两个内存单元。两个内存单元。变量必须先说明后使用变量必须先说明后使用!说明的目的是确定变量的名字和类型。!说明的目的是确定变量的名字和类型。第8页,共52页,编辑于2022年,星期二3.4 整型数据整型数据整型常量的表示整型常量的表示 整型常

11、量根据表示的范围可以有长整型和一般整型,还可以表整型常量根据表示的范围可以有长整型和一般整型,还可以表示为十进制、八进制、十六进制。其中八进制、十六进制不能有符示为十进制、八进制、十六进制。其中八进制、十六进制不能有符号。号。一般整型的表示一般整型的表示进进 制制 表示举例表示举例 范范 围围 字节数字节数十十 进进 制制 2304 -32768 +32767 2八八 进进 制制 04400 0 0177777 2十六进制十六进制 0 xaa00 0 x0000 0 xffff 2长整型的表示长整型的表示进进 制制 表示举例表示举例 范范 围围 字节数字节数十十 进进 制制-21234l -2

12、31 +231-1 4八八 进进 制制 04400l 0 01777777777 4十六进制十六进制 0 xaa00l 0 x0000-0 xffffffff 4第9页,共52页,编辑于2022年,星期二3.4 整型数据整型数据整型变量的分类整型变量的分类 有符号整型变量说明有符号整型变量说明 说明符说明符 所占字节数所占字节数 范围范围 int 2 -32768 +32767 short int 2 -32768 +32767 long int 4-2147483648 +2147483647无符号整型变量说明无符号整型变量说明说明符说明符 所占字节数所占字节数 范围范围 unsigned2

13、 0 65535unsigned short2 0 65535unsigned long4 0 4294967295unsigned d,e,f;第10页,共52页,编辑于2022年,星期二3.4 整型数据整型数据 整型变量的定义整型变量的定义 C C规定在程序中所有用到的变量都必须在程序中指定其类型规定在程序中所有用到的变量都必须在程序中指定其类型,即即“定义定义”。例如例如:int a,b;(int a,b;(指定变量指定变量a,ba,b为整型为整型)unsigned short c,d;(unsigned short c,d;(指定变量指定变量c,dc,d为无符号短整型为无符号短整型)1

14、 1ong e,f;ong e,f;(指定变量(指定变量e,fe,f为长整型)为长整型)对变量的定义,一般是放在一个函数的开头部分(也可以放在程对变量的定义,一般是放在一个函数的开头部分(也可以放在程序中间,但作用域只限于某一分程序,这将在后面介绍)。序中间,但作用域只限于某一分程序,这将在后面介绍)。第11页,共52页,编辑于2022年,星期二3.4 整型数据整型数据 整型变量的定义整型变量的定义(举例)举例)/*/*test3.c*/test3.c*/main()main()int a,b,c,d;int a,b,c,d;*指定指定a,b,c,da,b,c,d为整型变量为整型变量*unsi

15、gned u;unsigned u;*指定为无符号整型变量指定为无符号整型变量*/*/a=12;b=-24;u=10;a=12;b=-24;u=10;c=a+u;d=b+u;c=a+u;d=b+u;printf(c=%d d=%d,c,d);printf(c=%d d=%d,c,d);不同种类的整型数据可以进行算术运算。不同种类的整型数据可以进行算术运算。第12页,共52页,编辑于2022年,星期二(1)浮点型常量的表示(只有十进制表示)浮点型常量的表示(只有十进制表示)浮点型常量浮点型常量有两种表示方式:小数表示方法,指数表示方法。有两种表示方式:小数表示方法,指数表示方法。不区分单、双精度

16、。不区分单、双精度。小数表示方式规则:一个小数点、符号和至少一位数字。小数表示方式规则:一个小数点、符号和至少一位数字。-2.0 1.0.11113 -15.指数表示方式规则:指数表示方式规则:规则:规则:nem 表示表示 n10mn小数部分,整型常量或小数形式表示的实型常量。小数部分,整型常量或小数形式表示的实型常量。指数部分,三位整数。指数部分,三位整数。n决定精度,一般精度为决定精度,一般精度为7位;位;m决定范围,范围决定范围,范围10-38到到10+38,当超过,当超过范围时称为范围时称为“溢出溢出”,小于,小于10-38称为下溢,当称为下溢,当0处理,大于处理,大于10+38,称为

17、上溢,称为上溢,系统出错!系统出错!123.456 表示为表示为 0.123456E+3-10000000 表示为表示为 -1e+70.0000123 表示为表示为 0.123e-43.5 实型数据实型数据第13页,共52页,编辑于2022年,星期二(2)(2)实型变量实型变量 C C实型变量分为实型变量分为单精度单精度(floatfloat型型)和和双精度双精度(doubledouble型型)两类两类,对每一个实对每一个实型变量都应在使用前加以定义。如型变量都应在使用前加以定义。如:float x;/*float x;/*一般一般,一个一个floatfloat型数据在内存中占型数据在内存中占

18、4 4个字节个字节(32(32位位)*/)*/double z;/*double z;/*一个一个doubledouble型数据占型数据占8 8个字节。个字节。*/*/单精度实数提供单精度实数提供7 7位有效数字位有效数字,双精度实数提供双精度实数提供1616位有效数字位有效数字,数,数值的范围随机器系统而异。值的范围随机器系统而异。单精度实数的数值范围约为单精度实数的数值范围约为1010-38-3810103838,双精度双精度实数范围约为实数范围约为1010-308-3081010308308。应当说明应当说明,实型常量不分实型常量不分floatfloat型和型和doubledouble型

19、。型。一个一个实型常量可以赋给一个实型常量可以赋给一个floatfloat型或型或doubledouble型变量型变量。根据变量的类型截取。根据变量的类型截取实型常量中相应的有效位数字实型常量中相应的有效位数字,3.5 实型数据实型数据说明符说明符 所占字节数所占字节数 范围范围 精度精度float 4 10-38 10+38 7位位double 8 10-306 10+306 16位位第14页,共52页,编辑于2022年,星期二(2)(2)实型变量实型变量例:例:main()/*test4.c*/main()/*test4.c*/float s;float s;s=111111.11;s=1

20、11111.11;printf(nfloat=%f,s);printf(nfloat=%f,s);3.5 实型数据实型数据main()/*test5.c*/main()/*test5.c*/double s;double s;s=111111.11;s=111111.11;printf(ndouble=%f,s);printf(ndouble=%f,s);第15页,共52页,编辑于2022年,星期二(3)实型数据的舍入问题实型数据的舍入问题3.5 实型数据实型数据浮点型变量包含精度和范围两个概念。浮点型变量包含精度和范围两个概念。超过精度位数后的位数值不确定。超过精度位数后的位数值不确定。fl

21、oat a;a=1.1111111111;超过范围溢出超过范围溢出(Overflow)。float a,b,c;a=1.234e+20 b=2.345e+21c=a*b 当运算结果大于当运算结果大于10+38称称为上溢,系统出错。为上溢,系统出错。当运算结果小于当运算结果小于10-38称称为下溢,当为下溢,当0处理。处理。超出精度部分,不准确。超出精度部分,不准确。超出超出1038,溢出。,溢出。第16页,共52页,编辑于2022年,星期二3.6 字符型数据字符型数据(1)字符常量的表示字符常量的表示 表示表示ASCII字符集中的一个字符字符集中的一个字符。字符有一个整型值,即该字符字符有一个

22、整型值,即该字符的的ASCII码值。表示方法:码值。表示方法:a、!。撇号定界的一个字符。值为:值为:97(2)字符串常量的表示字符串常量的表示 双引号双引号“定界的字符序列。系定界的字符序列。系统会在最后一个字符后加统会在最后一个字符后加NULL(ASCII码值为码值为0),标志字符串的结束。,标志字符串的结束。如:如:”HEFEI”hello”a 和和 ”a”的区别?的区别?内部内部 a:97 ”a”:97NULL第17页,共52页,编辑于2022年,星期二3.6 字符型数据字符型数据(3)转义字符转义字符 转义字符转义字符是是C语言表示字符的特殊方法,用来表示语言表示字符的特殊方法,用来

23、表示ASCII字符集字符集中的控制字符,以及系统占用字符如:中的控制字符,以及系统占用字符如:”。表示方法:表示方法:字符;字符;八进制(十六进制整数,小于八进制(十六进制整数,小于256)b 表示回退一格表示回退一格字母字母 n 表示换到下一行头表示换到下一行头r 表示回车到本行头表示回车到本行头 t 表示表示TAB(占占8列列)表示表示?表示表示?符号符号 表示表示”表示表示”0表示表示NULL八进制十六进制数八进制十六进制数 x41 101 代表代表Aprintf(“007”);响铃响铃 printf(“语文语文n数学数学n”);例:例:“141141abct”?统计该字符串的长度?统计

24、该字符串的长度第18页,共52页,编辑于2022年,星期二(4)转义字符举例转义字符举例 main()/*test7.c*/printf(ab ct derftgn);printf(htibbj k);运行结果运行结果:f_ _ _ _ _ _ _ gde h_ _ _ _ _ _ j _ k 3.6 字符型数据字符型数据第19页,共52页,编辑于2022年,星期二(5)字符变量字符变量 一个字符占一个字节一个字符占一个字节.字符型变量用来存放字符常量字符型变量用来存放字符常量,注意只能放一个字符注意只能放一个字符,不要以为在一个不要以为在一个字符变量中可以放一个字符串字符变量中可以放一个字符

25、串(包括若干字符包括若干字符)。字符变量的定义形式如下字符变量的定义形式如下:char c1,c2char c1,c2;它它表表示示c1c1和和c2c2为为字字符符型型变变量量,各各可可以以放放一一个个字字符符,因因此此可可以以用用下下面面语语句句对对c1c1、c2c2赋值赋值:c1=ac1=a;c2=bc2=b;一一般般以以一一个个字字节节来来存存放放一一个个字字符符,或或者者说说一一个个字字符符变变量量在在内内存存中中占占一一个个字字节。节。3.6 字符型数据字符型数据说明符说明符 所占字节数所占字节数 范围范围 char 1 -128 +127unsigned char 1 0 255第

26、20页,共52页,编辑于2022年,星期二(6)字符数据在内存中的存储形式及其使用方法字符数据在内存中的存储形式及其使用方法 将将一一个个字字符符常常量量放放到到一一个个字字符符变变量量中中,实实际际上上并并不不是是把把该该字字符符本本身身放放到到内内存存单元中去单元中去,而是而是将该字符的相应的将该字符的相应的ASCIIASCII代码放到存储单元中代码放到存储单元中。例例如如字字符符aa的的ASCIIASCII代代码码为为97,97,bb为为98,98,。实实际际上上是是以以二二进进制制形式存放的形式存放的.3.6 字符型数据字符型数据c1c2979801100001011000010110

27、001001100010main()main()char c1,c2char c1,c2;c1=97;c2=98;c1=97;c2=98;printf(“%c%c”printf(“%c%c”,c1,c2)c1,c2);运行结果运行结果:a ba b第21页,共52页,编辑于2022年,星期二(6)字符数据在内存中的存储形式及其使用方法字符数据在内存中的存储形式及其使用方法 c1c1、c2c2被被指指定定为为字字符符变变量量。但但在在第第3 3行行中中,将将整整数数9797和和9898分分别别赋赋给给c1c1和和c2,c2,它它的作用相当于以下两个赋值语句的作用相当于以下两个赋值语句:c1=a;

28、c2=bc1=a;c2=b因因为为aa和和bb的的ASCIIASCII码码为为9797和和9898。也也可可以以理理解解为为将将9797和和9898两两个个整整数数直直接存放到接存放到clcl和和c2c2的内存单元中。的内存单元中。字字符符数数据据以以ASCII码码存存储储,它它的的存存储储形形式式与与整整数数的的存存储储形形式式相相类类似似。C语语言言使使字字符符型型数数据据和和整整型型数数据据之之间间可可以以通通用用。一一个个字字符符数数据据既既可可以以以以字字符符形形式式输输出出,也也可可以以以以整整数数形形式式输输出出。以以字字符符形形式式输输出出时时,需需要要先先将将存存储储单单元元

29、中中的的ASCII码码转转换换成成相相应应字字符符,然然后后输输出出。以以整整数数形形式式输输出出时时,直直接接将将ASCII码码作作为为整整数数输输出出。也也可可以以对对字字符符数数据据进进行行算算术术运运算算,此此时时相相当当于于对对它它们们的的ASCII码进行算术运算。码进行算术运算。3.6 字符型数据字符型数据第22页,共52页,编辑于2022年,星期二(6)字符数据在内存中的存储形式及其使用方法字符数据在内存中的存储形式及其使用方法字符数据与整型数据可以互相赋值字符数据与整型数据可以互相赋值。如:。如:int i;int i;char c;char c;i=a;i=a;c=97;c=

30、97;是合法的。如果将是合法的。如果将i i的值输出得到的值输出得到9797。输出。输出c c可得字符可得字符aa。字字符符数数据据可可以以以以字字符符形形式式输输出出,也也可可以以用用整整数数形形式式输输出出。例例如如在在上上面面语语句句之后执行语句:之后执行语句:printfprintf(”c c,dn”dn”,c,cc,c););printf printf (”c c,dn”,idn”,i,i i););printf printf (”c c,dn”,i-32dn”,i-32,i-32i-32););3.6 字符型数据字符型数据输出的结果是什么?输出的结果是什么?第23页,共52页,编辑

31、于2022年,星期二(7)字符串常量字符串常量 字字符符常常量量是是由由一一对对单单引引号号括括起起来来的的单单个个字字符符。C C语语言言除除了了允允许许使使用用字字符符常常量量外外,还还允允许许使使用用字字符符串串常常量量。字字符符串串常常量量是是一一对对双双引引号号括括起起来来的的字字符符序列。序列。如:如:“How do you doHow do you do。”,”CHINA”CHINA”,”12312345”45”都是字符串常量,可以输出一个字符串,如都是字符串常量,可以输出一个字符串,如 printf printf (”How do you do.”How do you do.”

32、);char c;char c;c=a;c=a;right!right!c=”a”;c=”a”;error!error!c c”CHINA”CHINA”,也是错误的。不能把一个字符串赋给一个字符变量。,也是错误的。不能把一个字符串赋给一个字符变量。3.6 字符型数据字符型数据a a 和和“a”a”究竟有什么区别究竟有什么区别?第24页,共52页,编辑于2022年,星期二(7)字符串常量字符串常量C C规规定定:在在每每一一个个字字符符串串的的结结尾尾加加一一个个“字字符符串串结结束束标标志志”,以以便便系系统统据据此此判判断断字字符符串串是是否否结结束束。c c规规定定以以字字符符00作作为为

33、字字符符串串结结束束标标志志。00是是一一个个ASCIIASCII码码为为0 0的的字字符符,从从ASCIIASCII代代码码表表中中可可以以看看到到ASCIIASCII码码为为0 0的的字字符符是是,“空空操操作作字字符符”,即即它它不不引引起起任任何何控控制制动动作作,也也不不是是一一个个可显示的字符。可显示的字符。如果有一个字符串,如果有一个字符串,“CHINA”CHINA”实际上在内存中是实际上在内存中是:3.6 字符型数据字符型数据CHINA0 它的长度它的长度6 6个字符,最后一个字符为个字符,最后一个字符为00。但在输出时不输出。但在输出时不输出.例如例如:printfprint

34、f(”How do you doHow do you do。”)输出时一个一个字符输出,直到遇到最后的输出时一个一个字符输出,直到遇到最后的00字符,就知道字符串结束,字符,就知道字符串结束,停止输出。停止输出。00,字符是系统自动加上的。,字符是系统自动加上的。第25页,共52页,编辑于2022年,星期二3.7 变量赋初值变量赋初值 程程序序中中常常需需要要对对一一些些变变量量预预先先设设置置初初值值。C C规规定定,可可以以在在定定义义变变量量时时同同时使变量初始化。时使变量初始化。如:如:int a=3int a=3;指定指定a a为整型变量,初值为为整型变量,初值为3 3 float

35、f=3.56float f=3.56;指定指定f f为实型变量,初值为为实型变量,初值为3 35656 char c=achar c=a;指定指定c c为字符变量,初值为为字符变量,初值为aa 也可以使被定义的变量的一部分赋初值。如:也可以使被定义的变量的一部分赋初值。如:int aint a,b b,c=5c=5表示表示a a、b b、c c为整型变量,只有为整型变量,只有c c初始化,值为初始化,值为5 5。如果对几个变量赋以同一个初值,不能写成:如果对几个变量赋以同一个初值,不能写成:int aint ab bc=3;c=3;ERROR!ERROR!而应写成:而应写成:int aint

36、a3 3,b b3 3,c=3;c=3;RIGHT!RIGHT!第26页,共52页,编辑于2022年,星期二3.7 变量赋初值变量赋初值 初始化不是在编译阶段完成的(只有在后面介绍的静态存储变量和外部初始化不是在编译阶段完成的(只有在后面介绍的静态存储变量和外部变量的初始化是在编译阶段完成的),而是在程序运行时执行本函数时赋以变量的初始化是在编译阶段完成的),而是在程序运行时执行本函数时赋以初值的。相当于有一个赋值语句,例如初值的。相当于有一个赋值语句,例如 int a=3int a=3;相当于:相当于:int aint a;指定指定a a为整型变量为整型变量 a=3a=3;赋值语句,将赋值语

37、句,将3 3赋予赋予a a又如又如 int aint a,b,c=5;b,c=5;相当于:相当于:int aint a,b,c;b,c;指定指定a a、b b、c c为整型变量为整型变量 c5;将将5赋给赋给c 第27页,共52页,编辑于2022年,星期二3.8 各类数值型数据间的混合运算各类数值型数据间的混合运算 整整型型、单单精精度度型型、双双精精度度型型数数据据可可以以混混合合运运算算。前前已已述述及及,字字符符型型数数据据可可以以与与整整型型通通用用,因因此此,整整型型、实实型型(包包括括单单、双双精精度度)、字字符符型型数数据据间间可可以混合运算。例如以混合运算。例如 10+10+a

38、+1a+15-87655-876512341234bb是是合合法法的的。在在进进行行运运算算时时,不不同同类类型型的的数数据据要要先先转转换换成成同同一一类类型型,然然后后进进行行运运算。转换的规则按下图所示算。转换的规则按下图所示 double floatlongunsignedint char,short第28页,共52页,编辑于2022年,星期二3.8 各类数值型数据间的混合运算各类数值型数据间的混合运算图中图中横向向左的箭头横向向左的箭头表示必定的转换,如字符数据必定先转换为整数,表示必定的转换,如字符数据必定先转换为整数,shortshort型转为型转为intint型,型,float

39、float型数据在运算时一律转换成双精度型,以提高运型数据在运算时一律转换成双精度型,以提高运算精度(即使是两个算精度(即使是两个floatfloat型数据在加化成型数据在加化成doubledouble型,然后再相加)。型,然后再相加)。纵向的箭头纵向的箭头表示当运算对象为不同类型时转换的方向。例如表示当运算对象为不同类型时转换的方向。例如int型与型与doub1e型数据进行运算,先将型数据进行运算,先将int型的数据转换成图型的数据转换成图double型,然后在两型,然后在两个同类型(个同类型(double型)数据进行运算,结果为型)数据进行运算,结果为double型。注意箭头方向只型。注意

40、箭头方向只表示数据类型级别的高低,由低向高转换,不要理解为表示数据类型级别的高低,由低向高转换,不要理解为int型先转成型先转成unsigned型,再转成型,再转成1ong型,再转成型,再转成double型。如果一个型。如果一个Int型数据与一个型数据与一个double型数型数据运算,是直接将据运算,是直接将int型转成型转成double型。同理,一个型。同理,一个int型与一个型与一个Long型数据型数据运算,先将运算,先将int型转换成型转换成1ong型。型。第29页,共52页,编辑于2022年,星期二3.8 各类数值型数据间的混合运算各类数值型数据间的混合运算换换言言之之,如如果果有有一

41、一个个数数据据是是floatfloat型型或或doubledouble型型,则则另另一一数数据据要要先先转转为为doubledouble型型,结结果果为为doubledouble型型。如如果果二二个个数数据据中中最最高高级级别别为为1 1ongong型型,则则另另一一数数据先转为据先转为1 1ongong型,结果为型,结果为1 1ongong型。其它依此类推。型。其它依此类推。举例说明举例说明:假假设设已已指指定定i i为为整整型型变变量量,f f为为floatfloat变变量量,d d为为doubledouble型型变变量量,e e为为1 1ongong型型,有下面式子:有下面式子:10 1

42、0十十aai*f-d/ei*f-d/e运运算算次次序序为为:进进行行1010aa的的运运算算,先先将将aa转转换换成成整整数数9797,运运算算结结果果为为107107。进进行行i*fi*f的的运运算算。先先将将i i与与f f都都转转成成doubledouble型型,运运算算结结果果为为dOubledOuble型型。整整数数107107与与i*fi*f的的积积相相加加。先先将将整整数数107107转转换换成成双双精精度度数数(小小数数点点后后加加若若干干个个0 0,即即1071070000000000),结结果果为为doubledouble型型。将将变变量量e e化化成成doubledoub

43、le型型,d/ed/e结果为结果为doubledouble型。型。将将1010十十aai*fi*f的结果与的结果与”d/ed/e结果为结果为doubledouble型。型。上述的类型转换是由系统自动进行的。上述的类型转换是由系统自动进行的。第30页,共52页,编辑于2022年,星期二3.9 算术运算符和算术表达式算术运算符和算术表达式3.9.1 C运算符简介运算符简介C C的运算符有以下几类的运算符有以下几类:1 1算术运算符算术运算符 (+-*/%+-*/%)2 2关系运算符关系运算符 (=!=)3 3逻辑运算符逻辑运算符 (!(!|)4 4位运算符位运算符 (|&|&)5 5赋值运算符赋值

44、运算符 (=及其扩展赋值运算符)及其扩展赋值运算符)6 6条件运算符条件运算符 (?:?:)7.7.逗号运算符逗号运算符 (,)(,)8 8指针运算符指针运算符 (*和和&)第31页,共52页,编辑于2022年,星期二3.9 算术运算符和算术表达式算术运算符和算术表达式3.9.1 C运算符简介运算符简介C C的运算符有以下几类的运算符有以下几类:9 9求字节数运算符求字节数运算符 (sizeofsizeof)1010强制类型转换运算符强制类型转换运算符 (类型)(类型)11 11分量运算符分量运算符 ()1212下标运算符下标运算符 ()1313其它其它 (如函数调用运算符()(如函数调用运算

45、符()第32页,共52页,编辑于2022年,星期二3.9 算术运算符和算术表达式算术运算符和算术表达式 程序重要的一点是对数据按照算法进行处理(运算)。程序重要的一点是对数据按照算法进行处理(运算)。C 语言语言的运算功能强大。的运算功能强大。数据通过运算符连接的式子称为表达式,数据通过运算符连接的式子称为表达式,表达式表达式根据根据运算对象运算对象及及运算关系运算关系得到一个得到一个值值。分类介绍如下:。分类介绍如下:变量赋值运算变量赋值运算格式:格式:V=expression;/*将将expression的值赋给变量的值赋给变量V*/int a=2;/*说明赋值,编译时赋值。说明赋值,编译

46、时赋值。*/int b;b=3+2;/*说明后赋值,执行时赋值。说明后赋值,执行时赋值。*/说明:说明:=是赋值号(动词);是赋值号(动词);赋值运算的左值只能是变量。赋值运算的左值只能是变量。a=a+2;iCount=iCount+10;a+2=12;/*Error!*/赋值号两边类型应该一致,如不一致,以变量类型转换。赋值号两边类型应该一致,如不一致,以变量类型转换。int a=2.5;/*2a */这里这里a的值等于的值等于2第33页,共52页,编辑于2022年,星期二3.9 算术运算符和算术表达式算术运算符和算术表达式1.基本的算术运算基本的算术运算 功能:完成各种类型数据的加、减、乘

47、、除及求余数运算。功能:完成各种类型数据的加、减、乘、除及求余数运算。双目算术运算(两个运算对象参加的运算)双目算术运算(两个运算对象参加的运算)运算运算规则示例+加2+3-减a-b*乘2*(-a)/除12/3.0%求余数15%4 只能对整型或字符型数据只能对整型或字符型数据运算。余数符号与被除数相运算。余数符号与被除数相同。同。-12%5-2?-12%(-5)“向零取整向零取整”.-5/3=-1第34页,共52页,编辑于2022年,星期二3.9 算术运算符和算术表达式算术运算符和算术表达式2.算术表达式和运算符的优先级与结合级算术表达式和运算符的优先级与结合级(附录附录III)表达式:表达式

48、:数据通过运算符连接的式子数据通过运算符连接的式子C算术表达式:算术表达式:用算术运算符和括号将运算对象(也称操作数)用算术运算符和括号将运算对象(也称操作数)连接起来的、符合连接起来的、符合C语言语法规则的式子。语言语法规则的式子。如:如:a*b/c-1.5+a 求表达式的值时,先按运算符的优先级别高到低的次序执行。求表达式的值时,先按运算符的优先级别高到低的次序执行。a+b*c (x+y)/c 算术运算符的结合方向为:算术运算符的结合方向为:“自左至右自左至右”a-b+cv如果参加运算的两个数中有一个数为实数,则如果参加运算的两个数中有一个数为实数,则结果是结果是doubledouble型

49、,因为所有实数都按型,因为所有实数都按doubledouble型型进行运算进行运算.v如果一个运算符的两侧的数据类型不同,则如果一个运算符的两侧的数据类型不同,则会按右边所述,先自动进行类型转换,使二者会按右边所述,先自动进行类型转换,使二者具有同一种类型,然后进行运算。具有同一种类型,然后进行运算。double floatlongunsignedint char,short第35页,共52页,编辑于2022年,星期二3.9 算术运算符和算术表达式算术运算符和算术表达式3.强制类型转换运算符将一个表达式转换成所需类型强制类型转换运算符将一个表达式转换成所需类型 (doubledouble)a

50、a (将(将a a转换成转换成doubledouble类型)类型)(intint)(x+yx+y)(将调(将调x+yx+y的值转换成整型)的值转换成整型)(floatfloat)(5 53 3)(将(将5 53 3的值转换成的值转换成floatfloat型)型)其一般形式为其一般形式为 :(类型名)(表达式)(类型名)(表达式)注意注意:表达式应该用括号括起来。如果写成表达式应该用括号括起来。如果写成 (int)x+y :只将只将x x转换成整型,然后与转换成整型,然后与y y相加。相加。需需要要说说明明的的是是在在强强制制类类型型转转换换时时,得得到到一一个个所所需需类类型型的的中中间间变变

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

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

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

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