数据类型运算符与表达式ppt课件_第1页
数据类型运算符与表达式ppt课件_第2页
数据类型运算符与表达式ppt课件_第3页
数据类型运算符与表达式ppt课件_第4页
数据类型运算符与表达式ppt课件_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、1 第2章 数据类型、运算符与表达式2.1 程序设计概述程序设计概述2.2 C言语的数据类型言语的数据类型2.3 常量和变量常量和变量2.4 整型数据整型数据2.5 实型数据实型数据2.6 字符型数据字符型数据2.7 算术运算与算术表达式算术运算与算术表达式2.8 赋值运算与赋值表达式赋值运算与赋值表达式2.9 C言语特有的运算和运算符言语特有的运算和运算符Return22.1 程序设计概述程序设计概述一个程序应包括对数据的描画和对数据处置的描画。 1对数据的描画,即数据构造。数据构造是计算机学科的中心课程之一,有许多专门著作论述,本课程就不再赘述。 在C言语中,系统提供的数据构造,是以数据类

2、型的方式出现的。 2对数据处置的描画,即计算机算法。算法是为处理一个问题而采取的方法和步骤,是程序的灵魂。为此,著名计算机科学家沃思Nikiklaus Wirth提出一个公式: 数据构造 + 算法 = 程序 实践上,一个程序除了数据构造和算法外,还必需运用一种计算机言语,并采用构造化方法来表示。 Return32.2 C言语的数据类型言语的数据类型C言语提供的数据构造,是以数据类型方式出现的。详细分类如下:1.根本类型分为整型、实型又称浮点型、字符型和枚举型四种。2.构造类型分为数组类型、构造类型和共用类型三种。3.指针类型。在第9章中引见。4.空类型C言语中的数据,有常量和变量之分,它们分别

3、属于上述这些类型。本章将引见根本类型中的整型、实型和字符型三种数据。Return42.3 常量和变量常量和变量2.3.1 常量常量 1.常量的概念常量的概念 在程序运转过程中,其值不能被改动的量称为常量。在程序运转过程中,其值不能被改动的量称为常量。 2.常量的分类常量的分类 1整型常量整型常量2实型常量实型常量3字符常量。字符常量。4符号常量。符号常量。常量的类型,可经过书写方式来判别。常量的类型,可经过书写方式来判别。2.3.2 变量变量1.变量的概念变量的概念在程序运转过程中,其值可以被改动的量称为变量。在程序运转过程中,其值可以被改动的量称为变量。2.变量的两个要素变量的两个要素51变

4、量名。每个变量都必需有一个名字变量名,变量命名遵照标识符命名规那么。2变量值。在程序运转过程中,变量值存储在内存中。在程序中,经过变量名来援用变量的值。.标识符命名规那么1有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。2有效长度:随系统而异,但至少前个字符有效。假设超长,那么超长部分被舍弃。例如,由于student_name和student_number的前个字符一样,有的系统以为这两个变量,是一回事而不加区别。在TC V2.0中,变量名标识符的有效长度为个字符,缺省值为。63C言语的关键字不能用作变量名。留意:C言语对英文字母的大小敏感,即同一字母的大小写,被以为是两个不同的

5、字符。习惯上,变量名和函数名中的英文字母用小写,以添加可读性。思索题:在C言语中,变量名total与变量名TOTAL、ToTaL、tOtAl等是同一个变量吗?标识符命名的良好习惯见名知意:所谓“见名知意是指,经过变量名就知道变量值的含义。通常应选择能表示数据含义的英文单词或缩写作变量名,或汉语拼音字头作变量名。例如,name/xm姓名、sex/xb性别、age/nl年龄、salary/gz工资。74.变量的定义与初始化在言语中,要求对一切用到的变量,必需先定义、后运用;且称在定义变量的同时进展赋初值的操作为变量初始化。1变量定义的普通格式 存储类型 数据类型 变量名, 变量名2;例如,floa

6、t radius, length, area; 2变量初始化的普通格式存储类型 数据类型 变量名=初值, 变量名2=初值2;例如,float radius=2.5, length, area; Return82.4 整型数据整型数据2.4.1 整型变量整型变量 1.分类分类 根据占用内存字节数的不同,整型变量又分为类:根据占用内存字节数的不同,整型变量又分为类:1根本整型类型关键字为根本整型类型关键字为int。2短整型类型关键字为短整型类型关键字为short int。3长整型类型关键字为长整型类型关键字为long int。4无符号整型。无符号型又分为无符号根本整型无符号整型。无符号型又分为无符

7、号根本整型unsigned int、无符号短整型、无符号短整型unsigned short和无和无符号长整型符号长整型unsigned long三种,只能用来存储无符号三种,只能用来存储无符号整数。整数。2.占用内存字节数与值域占用内存字节数与值域 上述各类型整型变量占用的内存字节数,随系统而异。上述各类型整型变量占用的内存字节数,随系统而异。在在16位操作系统中,普通用字节表示一个位操作系统中,普通用字节表示一个int型变量,且型变量,且long型字节型字节int型字节型字节short型字节。型字节。9显然,不同类型的整型变量,其值域不同。占用内存字节数为n的有符号整型变量,其值域为:-2n

8、*8-12n*8-1-1;无符号整型变量的值域为:02n*8-1。 例如,PC机中的一个int型变量,其值域为-22*8-122*8-1-1,即-3276832767;一个unsigned型变量的值域为:022*8-1,即065535。 2.4.2 整型常量.三种表示方式整型常量即整常数,在言语中可用三种方式表示:1十进制。例如10、36。2八进制以数字开头。例如012。3十六进制以数字+小写字母x开头。例如0 x36。10.分类1根本整型。在16位机中,用2字节存储,其数据范围与int型变量一样。2长整型在数值后面加“Ll。对超出根本整型值域的整型常量,可运用长整型常量表示,其取值范围可达-

9、。例如,123l、315等。.类型匹配规那么类型匹配规那么为:一个整型常量,可以赋给能包容下其值的整型变量。例如,其值在-的整型常量,可以赋给int型变量和long int型变量;其值在-的整型常量,就只能赋给long int型变量。 留意:常量无unsigned型。但一个非负整型常量,只需它的值不超越相应变量的值域即取值范围,也可以赋给unsigned型变量。Return112.5 实型数据实型数据2.5.1 实型变量实型变量 言语的实型变量,分为两种:言语的实型变量,分为两种: 1单精度型。类型关键字为单精度型。类型关键字为float,普通占字节位、,普通占字节位、提供位有效数字。提供位有

10、效数字。 2双精度型。类型关键字为双精度型。类型关键字为double,普通占个字节、提供,普通占个字节、提供1516位有效数字。位有效数字。2.5.2 实型常量实型常量 .表示方式表示方式实型常量即实数,在言语中又称浮点数,其值有两种表达方式:实型常量即实数,在言语中又称浮点数,其值有两种表达方式: 1十进制方式。例如十进制方式。例如3.14、9.8。 2指数方式:指数方式:Ee。例如。例如3.0+5等。等。 .关于类型关于类型 实型常量不分实型常量不分float型和型和double型。一个实型常量,可以赋给一个型。一个实型常量,可以赋给一个实型变量实型变量float型或型或double型。型

11、。Return122.6 字符型数据字符型数据2.6.1 字符常量字符常量1.字符常量的定义字符常量的定义用一对单引号括起来的单个字符,称为字符常量。用一对单引号括起来的单个字符,称为字符常量。例如,例如,A、等。等。2.本义字符本义字符言语还允许运用一种特殊方式的字符常量,就是以言语还允许运用一种特殊方式的字符常量,就是以反斜杠反斜杠“ 开头的本义字符。开头的本义字符。 留意:假设反斜杠或单引号本身作为字符常量,必留意:假设反斜杠或单引号本身作为字符常量,必需运用本义字符:需运用本义字符:、。案例案例2.1 用本义字符输出可打印字符和不可打印字符。用本义字符输出可打印字符和不可打印字符。 /

12、*案例代码文件名:案例代码文件名:AL2_1.C*/ /*程序功能:用本义字符输出可打印字符和不可打印程序功能:用本义字符输出可打印字符和不可打印字符字符*/13main() printf(“x4Fx4Bx21n);/* 等价于printf(“OK!n); */ printf(“x15 xABn); 程序运转结果如下: ! 程序演示 2.6.2 字符变量字符变量的类型关键字为char,普通占用1字节内存单元。1.变量值的存储 字符变量用来存储字符常量。将一个字符常量存储到一个字符变量中,实践上是将该字符的ASCII码值无符号整数存储到内存单元中。例如,char ch1, ch2; /*定义两个

13、字符变量:ch1,ch2*/ch1=a; ch2=b; /*给字符变量赋值*/142.特性字符数据在内存中存储的是字符的ASCII码 一个无符号整数,其方式与整数的存储方式一样如图2-4所示,所以言语允许字符型数据与整型数据之间通用。1一个字符型数据,既可以字符方式输出,也可以整数方式输出。 案例2.2 字符变量的字符方式输出和整数方式输出。 /*案例代码文件名:AL2_2.C*/ /*程序功能:用字符方式和整数方式输出字符变量*/ main() char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn,ch1,ch2); printf(“ch1=%

14、d,ch2=%dn,ch1,ch2); 程序运转结果: ch1=a,ch2=b ch1=97,ch2=98 程序演示152允许对字符数据进展算术运算,此时就是对它们的ASCII码值进展算术运算。 案例2.3 字符数据的算术运算。 /*案例代码文件名:AL2_3.C*/ /*程序功能:字符数据的算术运算*/ main() char ch1,ch2; ch1=a; ch2=B; /*字母的大小写转换*/ printf(“ch1=%c,ch2=%cn,ch1-32,ch2+32); /*用字符方式输出一个大于256的数值*/ printf(ch1+200=%dn, ch1+200); printf(

15、ch1+200=%cn, ch1+200); printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); 16程序运转结果:ch1=A,ch2=bch1+200=297ch1+200=)ch1+256=353ch1+256=a 程序演示思索题:用字符方式输出一个大于256的数值,会得到什么结果?2.6.3 字符串常量1.字符串常量的概念和字符串长度字符串常量是用一对双引号括起来的假设干字符序列。字符串中字符的个数称为字符串长度。长度为0的字符串即一个字符都没有的字符串称为空串,表示为“ 一对紧连的双引号。17例如,“How do yo

16、u do.、“Good morning.等,都是字符串常量,其长度分别为14和13空格也是一个字符。 假设反斜杠和双引号作为字符串中的有效字符,那么必需运用本义字符。例如:1C:msdosv6.22 C:msdosv6.22 2I say:Goodbye! I say:Goodbye!“2.字符串的存储C言语规定:在存储字符串常量时,由系统在字符串的末尾自动加一个0作为字符串的终了标志。留意:在源程序中书写字符串常量时,不用加终了字符0,否那么画蛇添足。 假设有一个字符串为“CHINA,那么它在内存中的实践存储如下所示:最后一个字符0是系统自动加上的,它占用字节而非字节内存空间。CHINA01

17、8综上所述,字符常量A与字符串常量A是两回事:1定界符不同:字符常量运用单引号,而字符串常量运用双引号;2长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数;3存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个终了标志0。Return192.7 算术运算与算术表达式算术运算与算术表达式在言语中,除控制语句和输入输出函数外,其它一切根本操作都作为运算符处置。 1.五种根本算术运算符 +、-减法/取负、*、/、%求余数1关于除法运算/C言语规定:两个整数相除,其商为整数,小数部分被舍弃。例如,5 / 2 = 2。 2

18、关于求余数运算要求两侧的操作数均为整型数据,否那么出错。 2.表达式和算术表达式1表达式的概念 用运算符和括号将运算对象常量、变量和函数等衔接起来的、符合言语语法规那么的式子,称为表达式。20 单个常量、变量或函数,可以看作是表达式的一种特例。将单个常量、变量或函数构成的表达式称为简单表达式,其它表达式称之为复杂表达式。2算术表达式的概念表达式中的运算符都是算术运算符。例如,3 + 6 * 9、(x + y) / 2 - 1等,都是算术表达式。良好的源程序书写习惯:在表达式中,在双目运算符的左右两侧各加一个空格,可加强程序的可读性。请比较表达式“ (x + y) / 2 1与“(x+y)/21

19、,您以为哪个的可读性更好一些?3.运算符的优先级与结合性1言语规定了运算符的优先级和结合性。 所谓结合性是指,当一个操作数两侧的运算符具有一样的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。21自左至右的结合方向,称为左结合性。反之,称为右结合性。结合性是言语的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。2表达式求值1按运算符的优先级高低次序执行。例如,先乘除后加减。2假设在一个运算对象或称操作数两侧的运算符的优先级一样,那么按言语规定的结合方向结合性进展。例如,算术运算符的结合方向是“自左至右,即:在执行“a b + c时,变量b

20、先与减号结合,执行“a - b;然后再执行加c的运算。224.数据类型转换数据类型转换1 在言语中,整型、实型和字符型数据间可以在言语中,整型、实型和字符型数据间可以混合运算由于字符数据与整型数据可以通用。混合运算由于字符数据与整型数据可以通用。假设一个运算符两侧的操作数的数据类型不同,那假设一个运算符两侧的操作数的数据类型不同,那么系统按么系统按“先转换、后运算的原那么,首先将数据自动先转换、后运算的原那么,首先将数据自动转换成同一类型,然后在同一类型数据间进展运算。转转换成同一类型,然后在同一类型数据间进展运算。转换规那么如图换规那么如图2-5所示。所示。1横向向左的箭头,表示必需的转换。

21、横向向左的箭头,表示必需的转换。char和和short 型必需转换成型必需转换成 int 型,型,float型必需转换成型必需转换成double型。型。 2纵向向上的箭头,表示不同类型的转换方向。纵向向上的箭头,表示不同类型的转换方向。 例如,例如,int型与型与double型数据进展混合运算,那么先型数据进展混合运算,那么先将将int型数据转换成型数据转换成double型,然后在两个同类型的数据型,然后在两个同类型的数据间进展运算,结果为间进展运算,结果为double型。型。 留意:箭头方向只表示数据类型由低向高转换,不留意:箭头方向只表示数据类型由低向高转换,不要了解为要了解为int型先转

22、换成型先转换成unsigned型,再转换成型,再转换成long型,型,最后转换成最后转换成double型。型。232除自动转换外,言语也允许强迫转换。数据类型强迫转换的普通格式为: (要转换成的数据类型)(被转换的表达式)当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。例如,(double)a 等价于(double)(a) /*将变量a的值转换成double型*/(int)(x + y) /*将x+y的结果转换成int型*/(float)5 / 2等价于(float)(5)/2 /*将5转换成实型,再除以2=2.5*/(float)(5 / 2) /*将5整除2的结果2转换成实型

23、2.0*/留意:强迫转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,(double)a 只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。Return242.8 赋值运算与赋值表达式 1.赋值运算赋值运算 赋值符号赋值符号“=就是赋值运算符,它的作用是将一个就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。表达式的值赋给一个变量。 赋值运算符的普通方式为:赋值运算符的普通方式为: 变量变量 = 赋值表达式赋值表达式 例如,例如,x = 5 y = (float)5 / 2 假设表达式值的类型,与被赋值变量的类型不一致,假设表达式值

24、的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。换成被赋值变量的数据类型,然后再赋值给变量。 思索题:假设变量思索题:假设变量num的数据类型为的数据类型为float,其值为,其值为2.5,那么执行那么执行“num = (int)num后,后,num的值等于多少?的值等于多少?252.复合赋值运算复合赋值运算复合赋值运算符是由赋值运算符之前再加一个双目运复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。算符构成的。复合赋值运算的普通格式为:复合赋值运算的普通格式

25、为: 变量变量 双目运算符双目运算符 = 表达式表达式 复合赋值运算符复合赋值运算符它等价于:变量它等价于:变量 = 变量变量 双目运算符双目运算符 (表达式表达式)。当表达式为简单表达式时,表达式外的一对圆括号才当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否那么能够出错。可缺省,否那么能够出错。例如,例如,x += 3 /* 等价于等价于x=x+3 */ y *= x + 6 /* 等价于等价于y=y*(x+6),而不是,而不是y=y*x+6 */C言语规定的言语规定的10种复合赋值运算符如下:种复合赋值运算符如下:+=,-=,*=,/=,%=; /*复合算术运算符复合算术运算符5

26、个个*/&=,=,|=,=;/*复合位运算符复合位运算符5个个*/263.赋值表达式赋值表达式由赋值运算符或复合赋值运算符,将一个变量和一由赋值运算符或复合赋值运算符,将一个变量和一个表达式衔接起来的表达式,称为赋值表达式。个表达式衔接起来的表达式,称为赋值表达式。1普通格式普通格式 变量变量 复合赋值运算符复合赋值运算符 表达式表达式2赋值表达式的值赋值表达式的值任何一个表达式都有一个值,赋值表达式也不例外。任何一个表达式都有一个值,赋值表达式也不例外。被赋值变量的值,就是赋值表达式的值。被赋值变量的值,就是赋值表达式的值。例如,例如,“a = 5这个赋值表达式,变量这个赋值表达式,

27、变量a的值的值“就就是它的值。是它的值。Return272.9 C言语特有的运算和运算符2.9.1 自增自增+、自减、自减-运算运算 1.作用作用 自增运算使单个变量的值增,自减运算使单个变自增运算使单个变量的值增,自减运算使单个变量的值减。量的值减。 2.用法与运算规那么用法与运算规那么 自增、自减运算符都有两种用法:自增、自减运算符都有两种用法: 1前置运算前置运算运算符放在变量之前:变量、运算符放在变量之前:变量、变量变量 先使变量的值增或减,然后再以变化后的值先使变量的值增或减,然后再以变化后的值参与其它运算,即先增减、后运算。参与其它运算,即先增减、后运算。 2后置运算后置运算运算符放在变量之后:变量、运算符放在变量之后:变量、变量变量 变量先参与其它运算,然后再使变量的值增或减变量先参与其它运算,然后再使变量的值增或减,即先运算、后增减。,即先运算、后增减。28 案例2.4 自增、自减运算符的用法与运算规那么例如。/*案例代码文件名:AL2_4.C*/*程序功能:自增、自减运算符的用法与运算规那么例如*/main() int x=6, y; printf(x=%dn

温馨提示

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

评论

0/150

提交评论