C程序设计配套及课后习题答案C3-数据类型ppt课件_第1页
C程序设计配套及课后习题答案C3-数据类型ppt课件_第2页
C程序设计配套及课后习题答案C3-数据类型ppt课件_第3页
C程序设计配套及课后习题答案C3-数据类型ppt课件_第4页
C程序设计配套及课后习题答案C3-数据类型ppt课件_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 数据类型、运算符和表达式3.1 C语言的数据类型C语言的数据结构是以数据类型形式出现的。C的数据类型如下 : 数据类型 基本类型 构造类型 指针类型 空类型 整型 字符型 实型 枚举类型 单精度型 双精度型 数组类型 结构体类型 共用体类型 数据结构?数据结构? 待处理的数据都是以某种形式存在的待处理的数据都是以某种形式存在的数字,字符等等)数字,字符等等) 数据之间存在某种联系数据之间存在某种联系数据结构:数据的组织形式。如:数组数据结构:数据的组织形式。如:数组一系列前后相邻的数字)一系列前后相邻的数字)C语言中的任何数据都必须为其指定数据语言中的任何数据都必须为其指定数据类型!类

2、型!3.2 3.2 常量和变量常量和变量3.2.1常量 & 符号常量定义:程序运行时其值不能改变的量即常数)。分类: 直接常量直接常量: : 整型常量整型常量 实型常量实型常量 字符常量字符常量 字符串常量字符串常量 符号常量符号常量: : 用标识符代表常量用标识符代表常量 定义格式:定义格式: #define #define 符号常量符号常量 常量常量 一般用大写字母一般用大写字母 是宏定义预处理命令,不是是宏定义预处理命令,不是C C语句语句如:#define PRICE 30符号常量举例#define PRICE 30main() int num,total; num=10; t

3、otal=num*PRICE; printf(total=%d,total);运行结果:total=3003.2.2 变量 “标识符”(identifier)的概念定义:用来标识变量、常量、函数等的字符序列组成规则:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感: case-sensitive不能使用关键字长度:各个C编译系统有不同的规定。建议不要超过8个命名原则:见名知意不宜混淆 如l与I, o与0在语言中,要求对所有用到的变量,必需 “先定义、后使用”!这样做的目的:这样做的目的:(1) (1) 避免变量名使用错;避免变量名使用错;(2) (2) 便于为不同类型的数

4、据分配内存空间;便于为不同类型的数据分配内存空间;(3) (3) 便于在编译过程中检查该变量所进行的运算是便于在编译过程中检查该变量所进行的运算是否合法;否合法;变量定义的一般格式: 数据类型 变量名, 变量名2; 例如,int radius, length, area;3.3 3.3 整型数据整型数据3.3.1 3.3.1 整型常量的表示方法整型常量的表示方法三种形式:三种形式:十进制整数:十进制整数: 由数字由数字0 09 9和正负号表示和正负号表示. . 如:如: 123,-456,0123,-456,0八进制整数:八进制整数: 由数字由数字0 0开头开头, ,后跟数字后跟数字0 07

5、7表表示示. . 如:如: 0123,0110123,011十六进制整数:由十六进制整数:由0 x0 x开头开头, ,后跟后跟0 09,a9,af,Af,AF F表示表示. . 如:如: 0 x123,0Xff0 x123,0Xff3.3.2 3.3.2 整型变量整型变量1.1.在内存中的存放形式:二进制正数、负数的不在内存中的存放形式:二进制正数、负数的不同表示形式)。在内存中占两个字节。同表示形式)。在内存中占两个字节。最左边一位:符号位。最左边一位:符号位。0 0为正,为正,1 1为负。为负。2.2.分类根据数值表达范围的不同)分类根据数值表达范围的不同)(1)(1)基本整型:基本整型:

6、int (int (数字范围:数字范围:-215-215(215-(215-1)1) (2) (2)短整型:短整型:short int short int 或或 shortshort(3)(3)长整型长整型: long int : long int 或或 longlongunsigned & signedunsigned & signed实际应用中,大部分常量的值是正的,如学实际应用中,大部分常量的值是正的,如学生年龄,身高等。为此定义了生年龄,身高等。为此定义了“unsigned”unsigned”无符号类型,指代无符号数值,如无符号类型,指代无符号数值,如123123,46

7、874687等。等。但是还有一些数字是负数:如但是还有一些数字是负数:如-123, -3-123, -3等,等,用用“signed”signed”有符号类型来定义。有符号类型来定义。如果一个变量,既不指定为如果一个变量,既不指定为unsigned, unsigned, 也不也不指定为指定为signedsigned,则默认为,则默认为 signedsigned。无符号整型变量中可以存放的正数的范围比无符号整型变量中可以存放的正数的范围比有符号整型变量中存放的范围扩大一倍。有符号整型变量中存放的范围扩大一倍。(见(见4343页:图页:图 3.43.4) int a; int a; 32768327

8、683276732767 unsigned int b; 0 unsigned int b; 065535655353.3.3 3.3.3 整型常量的类型整型常量的类型根据其值所在范围确定其数据类型。根据其值所在范围确定其数据类型。在整常量后面加一个字母在整常量后面加一个字母u u或或U U,认为是,认为是unsignedunsigned类类型。此时,在内存中的最高位即最左边一位不是符型。此时,在内存中的最高位即最左边一位不是符号位,而是数据。号位,而是数据。在整常量后加字母在整常量后加字母l l或或L L,认为它是,认为它是long int long int 型常量。型常量。3.4 3.4

9、实型数据实型数据3.4.1 3.4.1 实型常量的表示实型常量的表示 实型常量,又叫实数或浮点数。实型常量,又叫实数或浮点数。表示形式:十进制数形式:(必须有小数点) 如0.123, .123, 123.0, 0.0, 123.指数形式:(e或E之前必须有数字;之后的是指数,指数必须为整数)如12.3e3 ,123E2, 1.23e4“规范化的指数形式”3.4.23.4.2 实型变量实型变量实型数据在内存中:占实型数据在内存中:占4 4个字节个字节存储方式:指数形式!按小数部分和指数部分分别存存储方式:指数形式!按小数部分和指数部分分别存放。放。两个部分分别占的位数不同的编译系统有各自规定。两

10、个部分分别占的位数不同的编译系统有各自规定。分类按表示精度的不同)分类按表示精度的不同)单精度:单精度: float float 一般占字节位);一般占字节位); 6 67 7位位有效数字有效数字双精度:双精度: double double 一般占个字节;一般占个字节;15151616位有效数位有效数字字长双精度:长双精度: long doublelong double3.4.3 3.4.3 实型常量的类型实型常量的类型默认默认doubledouble型型在实型常量后加字母在实型常量后加字母f f或或F F,认为它是,认为它是floatfloat型型3.5 3.5 字符型数据字符型数据3.5.

11、1 3.5.1 字符常量字符常量定义定义: :用单引号括起来的单个普通字符或转义用单引号括起来的单个普通字符或转义字符字符. .字符常量的值:该字符的ASCII码值如 101 -A 012 -n 376 - x61 -a如 A65 a97 048 n10如 a A ? n 101转义字符:反斜线后面跟一个字符或一个代码值表示注意:如果反斜杠或单引号本身作为字符常量,注意:如果反斜杠或单引号本身作为字符常量,必须使用转义字符:必须使用转义字符:、 。转义字符!转义字符! 在语言程序中,常常会看到这样的语句:在语言程序中,常常会看到这样的语句:printf(“Welcome to C!n”);pr

12、intf(“Welcome to C!n”); 执行结果:语句最后的执行结果:语句最后的nn并没有被打印在屏并没有被打印在屏幕上。幕上。n n 称为称为“转义字符转义字符” ” 。 在碰到反斜杠时,在碰到反斜杠时,printfprintf把反斜杠和下一个字把反斜杠和下一个字符结合起来构成符结合起来构成“转义序列转义序列”,例如(,例如(nn的的意思是意思是“换行换行”,它使光标定位到下一行的开,它使光标定位到下一行的开始位置。始位置。3.5.2 3.5.2 字符变量字符变量 字符变量的类型关键字为字符变量的类型关键字为charchar,内存中占用,内存中占用1 1字节。字节。 字符变量用来存储

13、字符常量。将一个字符常字符变量用来存储字符常量。将一个字符常量存储到一个字符变量中,实际上是将该字符的量存储到一个字符变量中,实际上是将该字符的ASCIIASCII码值无符号整数存储到内存单元中。码值无符号整数存储到内存单元中。注意注意: :一个字符型变量只能存放一个字符常量!一个字符型变量只能存放一个字符常量!3.5.3 3.5.3 字符型数据的存储方式及使用字符型数据的存储方式及使用字符数据在内存中存储的是字符的字符数据在内存中存储的是字符的ASCIIASCII码码 一一个无符号整数,其形式与整数的存储形式一样,个无符号整数,其形式与整数的存储形式一样,所以语言允许字符型数据与整型数据之间

14、通用。所以语言允许字符型数据与整型数据之间通用。(1 1一个字符型数据,既可以字符形式输出,也一个字符型数据,既可以字符形式输出,也可以整数形式输出。(见可以整数形式输出。(见5050页例页例3.63.6)(2 2允许对字符数据进行算术运算,此时就是对允许对字符数据进行算术运算,此时就是对它们的它们的ASCIIASCII码值进行算术运算。码值进行算术运算。 (见(见5151页例页例3.73.7)3.5.4 3.5.4 字符串常量字符串常量定义:字符串常量是用一对双引号括起来的若干字定义:字符串常量是用一对双引号括起来的若干字符序列。符序列。例如,例如,“How do you do.”How d

15、o you do.”、“Good morning.”Good morning.”等,都是等,都是字符串常量,其长度分别为字符串常量,其长度分别为1414和和1313空格也是一个字符)。空格也是一个字符)。字符串长度:字符串中字符的个数称为字符串长度。字符串长度:字符串中字符的个数称为字符串长度。空串:长度为空串:长度为0 0的字符串即一个字符都没有的字符的字符串即一个字符都没有的字符串)。表示为串)。表示为“”“”(一对紧连的双引号)。(一对紧连的双引号)。注意:如果反斜杠和双引号作为字符串中的有效字符,注意:如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符。则必须使用转义字符。例

16、如,例如,I say:Goodbye! I I say:Goodbye! I say:Goodbye!say:Goodbye! 字符串的存储字符串的存储C C语言规定:在存储字符串常量时,由系统在字符串语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个的末尾自动加一个00作为字符串的结束标志。作为字符串的结束标志。注意:在源程序中书写字符串常量时,不必加结束注意:在源程序中书写字符串常量时,不必加结束字符字符00,否则画蛇添足。,否则画蛇添足。 如果有一个字符串为如果有一个字符串为“CHINA”CHINA”,则它在内存中,则它在内存中的实际存储如下所示:的实际存储如下所示:最后一个字

17、符最后一个字符00是系统自动加上的。因而,这是系统自动加上的。因而,这个字符串占用字节而非字节内存空间。个字符串占用字节而非字节内存空间。CHINA0注意:在注意:在C C语言中没有专门的字符串变量!语言中没有专门的字符串变量!3.63.6 变量赋初值变量赋初值 程序中通常要求对一些变量预先设置初值。程序中通常要求对一些变量预先设置初值。int a=3;int a;a=3;单个变量的赋值:单个变量的赋值:多个变量的赋值:多个变量的赋值:int a,b,c=5;int a,b,c=5;仅对仅对c c赋值赋值int a=3,b=3,c=5;int a=3,b=3,c=5;对三个变量都赋值对三个变量

18、都赋值3.63.6 各种数值类型数据之间的各种数值类型数据之间的 混合运算混合运算在语言中,整型、实型和字符型数据间可以混合运算因为在语言中,整型、实型和字符型数据间可以混合运算因为字符数据与整型数据可以通用)。字符数据与整型数据可以通用)。如果一个运算符两侧的操作数的数据类型不同,则系统如果一个运算符两侧的操作数的数据类型不同,则系统按按“先转换、后运算先转换、后运算的原则,首先将数据自动转换成同一类的原则,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。型,然后在同一类型数据间进行运算。( (转换规则如转换规则如5454页图页图3-103-10所示所示) )横向向左的箭头,表示

19、必须的转换。横向向左的箭头,表示必须的转换。charchar和和shortshort型必须转换成型必须转换成 int int 型,型,floatfloat型必须转换成型必须转换成doubledouble型。型。 纵向向上的箭头,表示不同类型的转换方向。纵向向上的箭头,表示不同类型的转换方向。 例如,例如,intint型与型与doubledouble型数据进行混合运算,则先将型数据进行混合运算,则先将intint型数据转换成型数据转换成doubledouble型,然后在两个同类型的数据型,然后在两个同类型的数据间进行运算,结果为间进行运算,结果为doubledouble型。型。注意:箭头方向只表

20、示数据类型由低向高转换,不要理注意:箭头方向只表示数据类型由低向高转换,不要理解为解为intint型先转换成型先转换成unsignedunsigned型,再转换成型,再转换成longlong型,最后型,最后转换成转换成doubledouble型。型。3.8 3.8 算术运算符和算术表达式算术运算符和算术表达式在语言中,除控制语句和输入输出函数外,其它所有在语言中,除控制语句和输入输出函数外,其它所有基本操作都作为运算符处理。基本操作都作为运算符处理。1. 1. 五种基本算术运算符五种基本算术运算符 + +、- -(减法(减法/ /取负)、取负)、* *、/ /、% %(求余数)(求余数)v关于

21、除法运算关于除法运算 / /v C C语言规定:两个整数相除,其商为整数,小数部分被舍弃。语言规定:两个整数相除,其商为整数,小数部分被舍弃。例如,例如,5 / 2 = 25 / 2 = 2。v关于求余数运算关于求余数运算 v 要求两侧的操作数均为整型数据,否则出错。要求两侧的操作数均为整型数据,否则出错。2. 2. 表达式和算术表达式表达式和算术表达式表达式的概念:用运算符和括号将运算对象常量、变量和表达式的概念:用运算符和括号将运算对象常量、变量和函数等连接起来的、符合语言语法规则的式子,称为表函数等连接起来的、符合语言语法规则的式子,称为表达式。达式。u算术表达式:表达式中的运算符都是算

22、术运算符。例如,算术表达式:表达式中的运算符都是算术运算符。例如,3 + 6 3 + 6 * * 9 9、(x + y) / 2 (x + y) / 2 等,则称为算术表达式。等,则称为算术表达式。运算符的优先级与结合性:运算符的优先级与结合性:(1 1语言规定了运算符的优先级和结合性。语言规定了运算符的优先级和结合性。 所谓结合性是指,当一个操作数两侧的运算符具有所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。是先与右边的运算符结合。 自左至右的结合方向,称为左结合性。反之

23、,称为自左至右的结合方向,称为左结合性。反之,称为右结合性。右结合性。 结合性是语言的独有概念。除单目运算符、赋值结合性是语言的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结运算符和条件运算符是右结合性外,其它运算符都是左结合性。合性。3. 3. 强制类型转换强制类型转换 除自动转换外,语言也允许强制转换。除自动转换外,语言也允许强制转换。数据类型强制转换的一般格式为:数据类型强制转换的一般格式为: ( (要转换成的数据类型要转换成的数据类型)()(被转换的表达式被转换的表达式) )当被转换的表达式是一个简单表达式时,外面的一当被转换的表达式是一个简单表达式时,

24、外面的一对圆括号可以缺省。对圆括号可以缺省。例如,例如,(double)a (double)a (等价于(等价于(double)(a) /(double)(a) /* *将变量将变量a a的值转换成的值转换成doubledouble型型* */ /(int)(x + y) (int)(x + y) / /* *将将x+yx+y的结果转换成的结果转换成intint型型* */ /(float)5 / 2(float)5 / 2等价于等价于(float)(5)/2(float)(5)/2) / /* *将将5 5转换成实型,再除以转换成实型,再除以2 2(=2.5=2.5)* */ /(float

25、)(5 / 2) (float)(5 / 2) / /* *将将5 5整除整除2 2的结果的结果2 2转换成实型转换成实型2.02.0)* */ /注意:强制转换类型得到的是一个所需类型的中间量,原表达式类注意:强制转换类型得到的是一个所需类型的中间量,原表达式类型并不发生变化。例如,型并不发生变化。例如,(double)a (double)a 只是将变量只是将变量a a的值转换成一个的值转换成一个doubledouble型的中间量,其数据类型并未转换成型的中间量,其数据类型并未转换成doubledouble型。型。 P56P56例例 3.83.84 4 自增、自减运算符自增、自减运算符v作用

26、:增运算使单个变量的值增,自减运算使单个变作用:增运算使单个变量的值增,自减运算使单个变量的值减。量的值减。v用法与运算规则:用法与运算规则:( (自增、自减运算符都有两种用法自增、自减运算符都有两种用法) )v前置运算前置运算运算符放在变量之前:变量、变运算符放在变量之前:变量、变量量 先使变量的值增或减,然后再以变化后的值参先使变量的值增或减,然后再以变化后的值参与其它运算,即先增减、后运算。与其它运算,即先增减、后运算。v后置运算后置运算运算符放在变量之后:变量、变量运算符放在变量之后:变量、变量v 变量先参与其它运算,然后再使变量的值增或变量先参与其它运算,然后再使变量的值增或减,即先

27、运算、后增减。减,即先运算、后增减。注意:自增、自减运算符,不能用于常量和表达式。注意:自增、自减运算符,不能用于常量和表达式。例如,例如,5+5+、-(a+b)-(a+b)等都是非法的。等都是非法的。见见 P57 P57 3.9 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式赋值符号赋值符号“=”=”就是赋值运算符,它的作用是将一个就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。表达式的值赋给一个变量。赋值运算符的一般形式为:赋值运算符的一般形式为: 变量变量 = = 赋值表达式赋值表达式 例如,例如, x = 5 x = 5 y = (float)5 / 2 y = (flo

28、at)5 / 2如果表达式值的类型,与被赋值变量的类型不一致,但如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。成被赋值变量的数据类型,然后再赋值给变量。 复合赋值运算符复合赋值运算符复合赋值运算符是由赋值运算符之前再加一个双目运算符构复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。复合赋值运算的一般格式为:成的。复合赋值运算的一般格式为: 变量变量 双目运算符双目运算符 = = 表达式表达式 复合赋值运算符复合赋值运算符它等价于:变量它等价于:变

29、量 = = 变量变量 双目运算符双目运算符 ( (表达式表达式) )例如,例如, x += 3 /x += 3 /* * 等价于等价于 x=x+3 x=x+3 * */ / y y * *= x + 6 /= x + 6 /* * 等价于等价于y=yy=y* *(x+6); (x+6); 而不是而不是y=yy=y* *x+6 x+6 * */ /C C语言规定的语言规定的1010种复合赋值运算符如下:种复合赋值运算符如下: +=+=,-=-=,* *= =,/=/=,%=%=; / /* *复合算术运算符复合算术运算符5 5个)个)* */ / &= &=,=,|=|=,=;/ /* *复合位运算符复合位运算符5 5个)个)* */ /3.9 3.9 逗号运算符和逗号表达式逗号运算符和逗号表达式语言提供一种用逗号运算符语言提供一种用逗号运算符“ , ”连接起来的式子,称为连接起来的式子,称为逗号表达式,又

温馨提示

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

评论

0/150

提交评论