《二级C语言程序设计》第2章数据与运算.ppt_第1页
《二级C语言程序设计》第2章数据与运算.ppt_第2页
《二级C语言程序设计》第2章数据与运算.ppt_第3页
《二级C语言程序设计》第2章数据与运算.ppt_第4页
《二级C语言程序设计》第2章数据与运算.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 数据与运算,2.1 常量与变量,常量:是在程序运行过程中其值不能发生改变的量。 例如256、3.45、a等。,变量:是在程序运行过程中其值可以发生改变的量。变量在内存中占据一定的存储单元。在该存储单元中存放变量的值。变量的标识通过给变量取名实现,所以一个变量应该有一个名字。,用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符,简单地说,标识符就是一个名字。,第2章 数据与运算,2.1 常量与变量,C语言规定标识符必须满足以下规则: (1)所有标识符必须由一个字母(az,AZ)或下划线( _ )开头。 (2)标识符的其他部分可以用字母、下划线或数字 (09

2、)组成。 (3)大小写字母表示不同意义,即代表不同的标识符。 (4)标识符只有前32个字符有效。 (5)标识符应当尽量遵循“简洁明了”和“见名知义”的原则。 (6)标识符不能使用C语言的关键字。,第2章 数据与运算,2.1 常量与变量,所谓关键字就是已被Turbo C 2.0本身使用、不能作其他用 途使用的字。Turbo C 2.0有以下关键字: Turbo C 2.0扩展的共11个: asm_cs _ds _es_ss cdecl farnearhugeinterrupt pascal 由ANSI标准定义的共32个: auto double int structbreak else long

3、 switch caseenum register typedef char externreturn unionconstfloat shortunsigned continueforsigned void default gotosizeofvolatiledoif whilestatic,第2章 数据与运算,2.1 常量与变量,C语言规定变量在使用前必须先定义。 变量定义的一般形式为: 类型说明符 变量标识符,变量标识符,; 示例:int a,b,c; float e,f; char x,y; 以上int,float,char为类型说明符,a,b,c,e,f,x,y 为变量标识符。,第2

4、章 数据与运算,2.2 数据类型,数据的组织形式称为数据结构。 C语言中的数据结构表现为数据类型。,第2章 数据与运算,2.2 数据类型,1整型变量,2.2.1 整型数据,第2章 数据与运算,2.2 数据类型,整型变量的定义: 整型类型说明符 变量标识符,变量标识符,; 示例:int a,b,c; /*定义a,b,c为基本整型变量*/ long d,e; /*定义d,e为长整型变量*/ unsigned x,y; /*定义x,y为无符号基本整型变量*/ 在书写变量说明时,应注意以下几点: (1)允许在一个类型说明符后说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一

5、个空格间隔。 (2)最后一个变量名之后必须以“;”号结尾。 (3)变量说明必须放在变量使用之前,一般放在函数体的开头部分。,1整型变量,2.2.1 整型数据,第2章 数据与运算,2.2 数据类型,2整型常量,整型常量即整常数。 按不同的进制区分,整型常数有三种表示方法: (1)十进制数:以非0开始的数, 如:254,-10,45600。 (2)八进制数:以0开始的数, 如:06,0106,057。 (3)十六进制数:以0X或0 x开始的数, 如:0X2A,0XFF,0 x58。,1整型变量,2.2.1 整型数据,第2章 数据与运算,2.2 数据类型,(1)一个整常量,如果其值在-32768+3

6、2767范围内,认为它是int型。它可以赋值给int型和1ong int型变量。 (2)一个整常量,如果其值超过了上述范围,而在-21474836482147483647范围内,则认为它是1ong int型。可以将它赋值给一个1ong int型变量。 (3)如果某一计算机系统的C版本确定的short int 与int型数据在内存中占据的长度相同,则它表示的数据范围与int型相同,因此一个int型的常量也同时是一个short int型常量,可以赋给int型或short int型变量;,整型常量的类型:,2整型常量,1整型变量,2.2.1 整型数据,第2章 数据与运算,2.2 数据类型,(4)常量

7、中无unsigned型。但一个非负值的整常量可以赋给unsigned型整变量,只要它的范围不超过变量表示的数据范围即可。例如,将50000赋给一个unsigned int型变量是可以的,而将70000赋给它则是不行的(溢出)。 (5)在一个整常量后面加一个字母l或L,则认为是1ong int型常量。,整型常量的类型:,2整型常量,1整型变量,2.2.1 整型数据,第2章 数据与运算,2.2 数据类型,2.2.2 实型数据,1实型变量,实型也称为浮点型,Turbo C中实型变量有以下两种类型: (1)单精度浮点型。类型说明符为float,占4个字节(32位)内存空间,其数值范围为3.4E-383

8、.4E+38,只能提供七位有效数字。 (2)双精度浮点型。类型说明符为double,占8个字节(64位)内存空间,其数值范围为1.7E-3081.7E+308,可提供十六位有效数字。 说明:浮点数均为有符号浮点数,没有无符号浮点数。,第2章 数据与运算,2.2 数据类型,2.2.2 实型数据,1实型变量,实型变量定义: 实型类型说明符 变量标识符,变量标识符,; 示例:float a, f; /*定义a,f为单精度浮点型变量*/ double b; /*定义b为双精度浮点型变量*/,第2章 数据与运算,2.2 数据类型,2.2.2 实型数据,1实型变量,2实型常量,实型常量又称实数或浮点数,有

9、两种表示形式: (1)十进制数形式。十进制数形式由数字和小数点组成(注意必须有小数点)。例如:0.123、.123、123.0、123.、0.0、123.123等都是十进制数形式。 (2)指数形式。指数形式由十进制数加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为a E n (a为十进制数,n为十进制整数),表示值为 a10n,其中,a,n均不可缺省。 例:0.123E4 表示值为0.123104 -5.123E-4 表示值为-5.12310-4,第2章 数据与运算,2.2 数据类型,2.2.2 实型数据,1实型变量,2实型常量,说明: (1)浮点常数只有一种进制(

10、十进制)。 (2)所有实型常量都被默认为double类型。 (3)绝对值小于1的浮点数,其小数点前面的零可以省略。 (4)Turbo C以默认格式输出浮点数时,最多只保留小数点后六位。,第2章 数据与运算,2.2 数据类型,2.2.3 字符型数据,1字符常量,C语言的字符常量是用单引号(即撇号)括起来的一个字符。 例如:a、x,D、?、 $、A4等都是不同的字符常量。,C还允许用一种特殊形式的字符常量,这种特殊形式的字符常量称为转义字符。 转义字符以反斜线“”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。转义字符主要用来表示那些用一般字符不便于表示的

11、控制代码。,第2章 数据与运算,2.2 数据类型,2.2.3 字符型数据,1字符常量,第2章 数据与运算,2.2 数据类型,2.2.3 字符型数据,1字符常量,2字符变量,字符型变量用来存放字符常量。 类型说明符为char。 占1个字节(8位)内存空间。 字符变量的定义: 字符型类型说明符 变量标识符,变量标识符,; 示例:char a,b; /*定义a,b为字符型变量*/,第2章 数据与运算,2.2 数据类型,2.2.3 字符型数据,1字符常量,2字符变量,字符值是以ASCII码的形式存放在变量的内存单元中的。 例如:如果有char a,b; a=x;b=y; 查表可知,x的十进制ASCII

12、码是120,y的十进制ASCII码是121,所以对字符变量a,b赋予x和y值,实际上是在a,b两个单元内存放120和121的二进制代码,即: a单元为:,b单元为:,第2章 数据与运算,2.2 数据类型,2.2.3 字符型数据,1字符常量,2字符变量,由此可见,字符型量也可以看成是整型量。语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符型量输出。整型量为二字节量,字符型量为单字节量,当整型量按字符型量处理时, 只有低八位字节参与处理。,第2章 数据与运算,2.2 数据类型,2.2.3 字符型数据,1字符常量,2字符变量,3字符

13、串常量,C语言的字符串常量是用双引号括起来的一个字符序列。 例如“ABcd”、“9”、“a”等都是字符串常量。,第2章 数据与运算,2.2 数据类型,2.2.3 字符型数据,1字符常量,2字符变量,3字符串常量,字符串常量和字符常量是不同的量。它们之间主要有以下区别: (1)字符常量由单引号括起来,字符串常量由双引号括起来。 (2)字符常量只能是单个字符,字符串常量则可以含多个字符。 (3)可以把一个字符常量赋给一个字符变量,但不能把一个字符串常量赋给一个字符变量。在语言中没有相应的字符串变量。 (4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字符数加1。增加的一个字节

14、中存放字符0,这是字符串结束的标志。字符常量a和字符串常量“a”虽然看上去都只有一个字符,但在内存中的情况是不同的:a在内存中占一个字节,可表示为a;“a”在内存中占两个字节,可表示为a0。,第2章 数据与运算,2.3 运算符和表达式,2.3.1 算术运算符和算术表达式,1算术运算符,第2章 数据与运算,2.3 运算符和表达式,2.3.1 算术运算符和算术表达式,1算术运算符,2算术表达式,算术表达式是由算术运算符、括号以及操作对象组成的符合C语言语法规则的表达式。 C语言规定: (1)模运算符%仅用于整型变量或整型常量。 (2)一个表达式中如有多个运算符,则按相应运算符的优先级顺序计算。 (

15、3)当运算对象两侧的运算符的优先级别相同时,应按运算符的结合律处理。,第2章 数据与运算,2.3 运算符和表达式,2.3.1 算术运算符和算术表达式,1算术运算符,2算术表达式,第2章 数据与运算,2.3 运算符和表达式,2.3.1 算术运算符和算术表达式,1算术运算符,2算术表达式,(4)增1 运算符“+”是操作数加1,而减1运算符“- -”则是操作数减1。 例:x=x+1 可写成x+或+x x=x-1 可写成x-或-x 但是,表达式x+与+x是有区别的。表达式x+的值为x的原值(不增加1),而表达式+x的值为x变量增加1后的值。 例如:执行m=4;x= m +;后,m=5,x=4。 执行m

16、=4;x= + m;后,m=5,x=5。 同理,表达式x-值为x的原值(不减1),而表达式-x值为x原值减1后的值。 (5)+和-仅适用于变量,不能用于常量或表达式。,第2章 数据与运算,2.3 运算符和表达式,2.3.1 算术运算符和算术表达式,1算术运算符,2算术表达式,3类型转换,类型转换有两种方式:自动类型转换和强制类型转换。 自动类型转换:运算时不必用户指定,系统自动将不同类型的数据转换成同一类型,然后进行计算。 C语言规定不同类型数值转换的规则如下:,第2章 数据与运算,2.3 运算符和表达式,2.3.1 算术运算符和算术表达式,1算术运算符,2算术表达式,3类型转换,强制类型转换

17、:当自动类型转换不能实现目的时,可以用强制类型转换。 强制类型转换的一般形式如下: (类型) 例如:(int)(a+b) 是将a+b的结果强制转换成int型; (float) a/b 是将a的结果强制转换成float型后, 再进行计算。,第2章 数据与运算,2.3 运算符和表达式,2.3.1 算术运算符和算术表达式,2.3.2 赋值运算符和赋值表达式,1赋值运算符,C语言的赋值运算符是“=”,其作用是将赋值运算符右边表达式的值赋给其左边的变量。,2赋值表达式,赋值表达式是由赋值运算符将一个变量和一个表达式连接起来的式子。 赋值表达式的一般形式如下: 变量=表达式 说明: (1)赋值表达式的值等

18、于计算后赋值运算符左边变量的值。 (2)赋值运算符左边必须是变量。,注意:如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换,将赋值运算符右边表达式值的类型转换成赋值运算符左边变量的类型。,(1)将实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。 例:执行:int a; a=12.345; 结果:a =12 (2)将整型数据赋给单、双精度变量时,数值不变,但以浮点数形式存储到变量中。 例:执行:float b; b=12; 结果:b =12.00000,注意:如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换,将赋值运算符右

19、边表达式值的类型转换成赋值运算符左边变量的类型。,(3)字符型数据赋给整型变量时,由于字符只占一个字节,而整型变量为两个字节,因此将字符数据(8位)放到整型变量低8位中。Turbo C系统将字符处理为带符号的量,若字符最高位为0,则整型变量高8位全补0;若字符最高位为1,则高8位全补1。 例:执行:int c; 执行:int c; c=a; c=376; 结果:c =97 结果:c =-2 (4)整型数据赋给字符型变量,只把低8位原封不动送到字符型变量(即截断)。,注意:如果赋值运算符两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换,将赋值运算符右边表达式值的类型转换成赋值运算

20、符左边变量的类型。,(5)将带符号的整型数据(int型)赋给1ong int型变量时。要进行符号扩展,如果int型数据为正值(符号位为0),则1ong int型变量的高16位补0;如int型变量为负值(符号位为1),则1ong int型变量的高16位补1,将整型数的16位送到1ong型低16位中,以保持数值不改变。反之,若将一个1ong int型数据赋给一个int型变量,只把低16位原封不动送到整型变量(即截断)。 例:执行:int a=12; 执行:int a; long b; long b=65536; b=a; a=b; 结果:b =12 结果:a =0,注意:如果赋值运算符两侧的类型不

21、一致,但都是数值型或字符型时,在赋值时要进行类型转换,将赋值运算符右边表达式值的类型转换成赋值运算符左边变量的类型。,(6)将signed类型数据赋给长度相同的unsigned型变量时,原样照赋(连同符号位);反之,将unsigned类型数据赋给长度相同的signed型变量时,同样原样照赋,再将最高位作为符号位处理。 例:执行:unsigned a; 执行:int a; int b=-1; unsigned b=65535; a = b; a = b; 结果:a =65535 结果:b =-1,第2章 数据与运算,2.3 运算符和表达式,2.3.1 算术运算符和算术表达式,2.3.2 赋值运算

22、符和赋值表达式,3复合赋值运算符,C语言允许在赋值运算符“=”之前加上其他运算符,以构成 其复合运算符。 复合运算符有:+=、-=、*=、/=、%=。 例如:a+=2 等价于 a=a+2 x*=y+5 等价于 x=x*(y+5) x%=8 等价于 x=x%8 同样: (1)复合赋值表达式的值等于计算后赋值运算符左边变量的值。 (2)复合赋值运算符左边必须是变量。 赋值运算符的结合律都是从右向左执行, 其优先级低于所有算术运算符。,第2章 数据与运算,2.3 运算符和表达式,2.3.1 算术运算符和算术表达式,2.3.2 赋值运算符和赋值表达式,2.3.3 逗号运算符和逗号表达式,逗号运算符为“

23、,”。 逗号表达式是用逗号运算符把表达式组合成的一个表达式。 其一般形式为: 表达式1,表达式2,表达式3,表达式N 说明: (1)逗号表达式的执行过程是:依次求表达式1的值、表达式2的值、表达式N的值,整个逗号表达式的值是表达式N的值。 (2)逗号运算符是所有运算符中级别最低的。,第2章 数据与运算,2.3 运算符和表达式,2.3.1 算术运算符和算术表达式,2.3.2 赋值运算符和赋值表达式,2.3.3 逗号运算符和逗号表达式,例如: main() int x, y; x=50; y=(x=x-5, x/5); 上面程序执行后y的值为9,因为x的初始值为50, 减5后变为45,45除5为9

24、赋给y。,第2章 数据与运算,2.4 本章考点,C语言对用户标识符的规定。 整型变量的定义和整型常量的表示。 实型变量的定义和实型常量的表示。 字符型变量的定义和字符型常量的表示。 算术运算符和算术表达式。 赋值运算符和赋值表达式。 逗号运算符和逗号表达式。 运算符的优先级和结合律。 混合运算中的类型转换。,第2章 数据与运算,2.5 典型试题详解,1以下选项中合法的用户标识符是_。 A)long B)_2Test C)3Dmax D)A.dat 正确答案:B(知识点:C语言对用户标识符的规定) 试题分析:C语言规定标识符必须由一个字母(az,AZ)或下划线(_)开头,标识符的其他部分可以用字

25、母、下划线或数字(09)组成。,第2章 数据与运算,2.5 典型试题详解,2以下选项中不属于C语言的类型的是_。 A)signed short int B)unsigned long int C)unsigned int D)long short 正确答案:D(知识点:C语言的基本数据类型) 试题分析:C语言的基本类型包括signed short int、unsigned long int、unsigned int、char、float、double等,没有long short类型。,第2章 数据与运算,2.5 典型试题详解,3在16位C编译系统上,若定义long a;,则能给变量a赋值400

26、00的正确语句是_。 A)a=20000+20000;B)a=4000*10; C)a=30000+10000;D)a=4000L*10L; 正确答案:D(知识点:算术运算和赋值运算中的类型转换) 试题分析:A、B、C选项中参与算术运算的对象是int类型,其结果应该是int类型,而结果值40000超出int类型范围,发生溢出,运算结果截取40000的低16位,再将其进行符号位扩展,赋给long类型的a,则a中的结果并不是40000。D选项中参与算术运算的对象是long类型,其结果是long类型,赋给long类型的a,则a中的结果是40000。,第2章 数据与运算,2.5 典型试题详解,4以下选

27、项中可以作为C语言中合法整数的是_。 A)10110BB)0386 C)0 xffaD)x2a2 正确答案:C(知识点:整型常量) 试题分析:C语言中整数的表示有十进制、八进制、十六进制三种方法。A、D选项应该是十进制表示方法,但A、D选项中出现了非法符号B、x、a;B选项应该是八进制表示方法,但选项中出现了非法符号8;C选项是十六进制表示方法,没有出现非法符号。,第2章 数据与运算,2.5 典型试题详解,5以下程序的输出结果是_。 main() unsigned short a=65536;int b; printf(%dn,b=a); 正确答案:0(知识点:赋值运算中的类型转换) 试题分析:将unsigne

温馨提示

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

评论

0/150

提交评论