c语言程序设计教学资料第2章---数据类型_第1页
c语言程序设计教学资料第2章---数据类型_第2页
c语言程序设计教学资料第2章---数据类型_第3页
c语言程序设计教学资料第2章---数据类型_第4页
c语言程序设计教学资料第2章---数据类型_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、 c语言的基本元素常量和变量的概念各种数据类型内容提要:内容提要:c语言的基本元素n 关键字(keyword)n 标识符(identifier)n 运算符(operator)n 分隔符(separator)空格、回车/换行、逗号等n 其它符号 花括号“”和“”用来标识函数体或者语句块“/*”和“*/”是程序注释所需的定界符n 数据(data)常量(variable) 变量(constant)c语言的基本元素关键字关键字也成保留字,它是c语言中具有特定含义,专门用作语言特定成分的一类符号。只能按照预先规定的含义使用,不能擅自改变其含义。ansi推荐的c语言的关键字是32个p 数据类型关键字:in

2、t char float等p 流程控制关键字:if else break等注意:注意:(1)关键字都有固定意义,不能擅自改变其含义。)关键字都有固定意义,不能擅自改变其含义。 (2)所有关键字都必须小写。)所有关键字都必须小写。 例:else与else代表不同含义。 else是关键字,else是用户自定义标识符。c语言的基本元素标识符标识符用来标记常量、变量、函数及文件名字的字符序列。可分为:p 系统预定标识符:系统预定标识符:系统预先定义好的标识符。如:主函数名main、库函数名printf等 系统预定义标识符和关键字的区别:前者允许用户赋予新的含义,但这样左会失去原先的预先定义的含义,使用

3、不当还会使程序出错。不提倡这种做法。p 用户自定义标识符:用户自定义标识符:用户根据需要自行定义的标识符。如:变量名、自定义函数名max等。 c语言的基本元素标识符的构成规则:p 必须以字母(大小写皆可)或下划线开头。p 随后可跟若干个(包括0个)字母、数字、下划线例: x y3 _imax else x a_to_b 7x int #no bad one re-inputc语言的基本元素注意:注意:p 不允许使用关键字作为标识符的名字,同时不应该与库函数名重名。 例:int,float, for, sin等p 标识符命名应“见名知意”。p 标识符区分大小写。例:sum、sum、sum是三个标

4、识符c语言的基本元素运算符运算符(1)算数运算符:+ - * / %(2)关系运算符: = = = !=(3)逻辑运算符:! & |(4)赋值运算符:= 复合赋值运算符:+= -= *= /= %= &= |= = =(5)增1和减1运算符:+ -(6)条件运算符:? :(7)强制类型转换运算符:(类型名)(8)指针和地址运算符:* &(9)计算字节数运算符:sizeof(10)下标运算符:(11)结构体成员运算符:- .(12)位运算符: | & (13)逗号运算符:,c语言的基本元素数据数据是操作的对象,表现形式的不同分为:p 常量(constant) 在程序中不能改变其值的量。p 变量(

5、variable) 在程序运行期间,其值是可以改变的量。常量p 按照类型分类:整型常量、实型常量、字符型常量、字符串常量、枚举常量(1)整型常量- 十进制常量:123,-1,0- 八进制常量:0123- 十六进制常量:0 x123(2)实型常量- 小数形式:12.34,-12.34- 指数形式:1.234e-5常量(3)字符常量- a- 转义字符:n等(4)字符串常量-由双引号括起来的字符序列 如: “123”, “abc” , “hello world”- c规定:在每一个字符串常量的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。- c规定以字符0作为字符串结束标志。它不引起

6、任何控制动作,也不显示常量 例:例:如果有一个字符串常量“ ”,实际上在内存中是:china0 它占内存单元不是5个字符,而是6个字符,最后一个字符为0。但在输出时不输出0。 例:例:a是字符常量, “a”是字符串常量,二者不同a0常量(5) 枚举常量- “一一举列”之意,用来表示有限个数据值例:一个星期只有七天,一年有十二个月 enum weekday sunday, monday, tuesday, wednesday, thursday, friday, saturday;常量p 符号常量(宏常量):用一个标识符代表一个常量。符号常量定义方法:#define 标识符标识符 常量常量 例:

7、#define price 30 void main() int num, total; num=10; total=num* price; printf(“total=%d”, total); 注意:(1)符号常量名习惯上用大写(2)符号常量的值在其作用域内不能改变,也不能再被赋值(3)宏常量没有数据类型优点:(1)含义清楚(2)需要改变一个常量时能做到“一改全改”p const常量:声明具有某种数据类型的常量。const常量定义方法:const 类型类型 标识符标识符= =常量常量 例:const double pi=3.14159变量p 用标识符(变量名)来表示。 - 只能以字母、数字、

8、下划线组成,且以字母或下划线开头。 - 见名知意 - 先定义后使用变量p 定义方法: 类型关键字 变量名; 类型关键字 变量名1, 变量名2, ; p 分类:整型变量、实型变量、字符型变量、指针型变量int a;float a, b, c;变量赋初值(1) c 语言允许在定义变量的同时使变量初始化 如: int a=3; / 指定a为整型变量,初值为3 float f=3.56; / 指定f为浮点型变量,初值为3.56 char c= a; / 指定c为字符变量,初值为a (2)可以使被定义的变量的一部分赋初值。 如: int a, b, c=5; /指定a、b、c为整型变量,但只对c初始化,

9、c的初值为5变量赋初值(3) 对几个变量赋以同一个初值 int a=b=c=3; int a=3,b=3,c=3; 变量p 变量代表内存中具有特定属性的一个存储单元,它用来存放数据,这就是变量的值。p 从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。a变量名变量值存储单元变量名和变量值是两个不同的概念。变量名实际上是以一个名字代表的一个存储地址。通过变量名找到相应的内存地址,从该存储单元中读取数据。c的数据类型高级语言中为什么要引入数据类型?p 对计算机系统和硬件而言,数据类型的概念是不存在的p 引入数据类型的主要目的:- 有效地组织数据,把数据分成所需内存空间大小

10、不同的数据- 规范数据的使用- 提高程序的可读性- 方便用户的使用c的数据类型n 不同类型的数据代表不同的- 数据表示形式 - 占用内存空间大小- 合法的取值范围- 可参与的运算种类 数据类型基本类型构造类型指针类型空类型整型浮点型(实型)字符型 char枚举类型数组类型结构体类型共用体类型单精度 float双精度 double基本整型 int长整型 long短整型 short无符号整型 unsigned整型数据整型数据:只有整数部分,没有小数部分。(1) 十进制整数 如:123, -456(2) 八进制整数,以0头的数是八进制数 如:0123表示八进制数123,等于十进制数83,-011表示

11、八进制数-11,即十进制数-9(3) 十六进制整数,以0 x开头的数是16进制数 如:0 x123,代表16进制数123,等于十进制数 291。 -0 x1f,等于十进制数-31。 (4) 二进制整数 如:00010001,等于十进制数17。 -00011111,等于十进制数 -31 。p 十进制数 用0-9这10个数中的一个表示十进制的一位数逢10进1的进位原则,基为10 每位数字都有一个权值,是10的幂次十进制表示的数值可以写成按位权展开的多项式之和 例:十进制数字123.45可表示为 1102+2101+3100+410-1+510-2p 二进制数 用0或1表示二进制的一位数逢2进1的进

12、位原则,基为2 每位数字都有一个权值,是2的幂次二进制表示的数值可以写成按位权展开的多项式之和 例:二进制数字101.11可表示为 122+021+120+121+12-2=5.75 二进制数101.11对应于十进制数5.75如何表示二进制的正、负?如何表示二进制的正、负?0为正,1为负0如何表示? +0的二进制:00000000 00000000 -0的二进制: 10000000 00000000负数以二进制补码(complement)形式存储 便于用统一的形式表示0 运算简单,将减法转为加法处理补码如何计算?补码如何计算? 正数的反码、补码与其原码都是相同的对于负数,保持符号位不变,原码反

13、码反码+1补码+0和-0的补码是相同的 符号位-0的原码-0的反码 -0的反码+1-0的补码 11000100000110000001100000011000000110000001100000011000000110000-1-1的补码如何计算的补码如何计算? ?符号位-1的原码-1的反码 -1的反码+1-1的补码 1111011100111111001111110011111100111111001111110011111101101111p二进制的压缩表示:八进制、十六进制二进制八进制(3位一组) 十进制二进制八进制000001001120102301134100451015611067

14、1117二进制、十进制、八进制转化表二进制十六进制(4位一组,以abcdef分别表示10-15)十进制二进制十六进制十进制二进制十六进制000000810008100011910019200102101010a300113111011b401004121100c501015131101d601106141110e701117151111f二进制、十进制、十六进制转化表整型数据整型数据有不同的类型p 根据数值的取值范围,分为基本整型int、短整型short (int)、长整型long (int)p 为了充分利用数据取值范围,又进一步分为有符号整型signed(系统默认为有符号)、无符号整型uns

15、igned数据类型整型(signed) intunsigned int(signed) short (int)unsigned short (int)(signed) long (int)所占字节数(byte)22取值范围-3276832767065535-215(215-1)0(216-1)-231(231-1)整数13在内存中实际存放的情况:000一个整型变量只能容纳-3276832767范围内的数,遇此情况就发生溢出。例:#include void main() int a,b; a=32767; b=a+1; printf(“%d,%dn”,a,b); 运行结果: 32767,-327

16、68整型数据整型数据超出取值范围时,数据呈现环形变化:32767+1=-32768 32767+2=-32767-32768-1=32767 -32768-2=32766浮点型数据浮点型数据(实型)表示方法(1) 十进制小数形式 如:3.14,9.8。(2) 指数形式 如:3.14e5,-3.14e-5注意:字母e(或e)的前后必须有数字,且e后面的数字必须为整数。例:1e3、1.8e-3、-123e-6 e3、1.8e3.5、e 可以有多种指数表示形式浮点数如:123.456可以表示为:123.456e0、12.3456e1、1.23456e2、0.123456e3 规范化的指数形式:在字母

17、e(或e)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。浮点型数据浮点型数据数值的取值范围,可分为:单精度(float)、双精度(double)、长双精度(long double)三种形式数据类型浮点型(实型)floatdoublelong double所占字节数(byte)4816取值范围-3.410-383.41038-1.710-3081.710308-1.210-49321.2104932有效数字6715161819注意:浮点型数据的舍入误差浮点型数据例:#include void main() float a, b; a= 123456.789e5; b=a+20;

18、 printf(“%fn %fn”, a,b); 运行结果:12345678848.000000 12345678848.000000避免将一个很大的数和一个很小的数直接相加减,大数吞小数,造成舍入误差。浮点型数据注意:实型内存存储格式的特殊性,无论是小数表示(12.34)还是指数表示(1.2e-5),在内存中都是用浮点方式存储的。实数:n=srj浮点数在计算机中的存储格式:阶码j(指数部分)尾数s(小数部分)阶码的符号阶码的数值尾数的符号尾数的符号阶码所占位数决定实数的取值范围尾码所占的位数决定实数的精度p 系统使用更多位来存储小数部分(尾数) p 系统使用更多的位存储指数部分(阶码) 扩大

19、了取值范围,但精度降低增加了数值有效数字位数,提高数值精度,但数值取值范围缩小浮点数并非真正意义上的实数,只是其在某种范围内的近似字符型数据p 字符型(char)数据就是字符,不具计算能力的文字数据类型p 字符型数据是用单引号括起来的一个字符。 例如: a 、 b 、 = 、 + 、 ? abc、“a” 字符型数据p 在c语言中,字符型数据有以下特点: - 字符型数据只能用单引号括起来,不能用双引号或其它括号。 - 字符型数据只能是单个字符,不能是字符串。 - 字符可以是字符集中任意字符。但数字被定义为字符型之后 就不能参与数值运算。如5和5是不同的。 p 转义字符是一种特殊的字符 - 转义字

20、符以反斜线开头,后跟一个或几个字符。转义字符 具有特定的含义,不同于字符原有的意义,故称“转义”字符。转义字符转义字符ntbrf”dddxhh转义字符的意义转义字符的意义回车换行横向跳到下一制表位置退格回车走纸换页反斜线符单引号符双引号符任意字符任意字符ascii代码代码10981312923934 13位八进制 二位十六进制x30、x41、x61分别表示字符0、a和a060、101、141分别表示字符0、a和a字符型数据p 字符数据以二进制编码方式存储在内存中 - 一个字节保存一个字符 - 字符数据就是一个普通的整数 - p 字符编码方式取决于计算机系统所使用的字符集 - ascii(美国标

21、准信息交换码)字符集 - 每个字符具有一个0127之间的编码值 - 可以从ascii码表中查出字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。字符型数据例:#include main() char ch= b; ch=b-32; printf(“%c, %d”, ch, ch); 运行结果:b, 66(1) 只要不超过ascii码取值范围,char数据和int数据之间可以相互转换。(2) 大、小写英文字母的ascii码相差32。字符型数据字符串和字符之间主要有以下区别:字符串和字符之间主要有以下区别:p字符由单引号括起来,字符串由双引号括起来。p字符只

22、能是单个字符,字符串则可以含一个或多个字符。p可以把一个字符型数据赋予一个字符变量,但不能把一个字符串赋予一个字符变量。在c语言中没有相应的字符串变量,也就是说不存在这样的关键字,将一个变量声明为字符串。但是可以用一个字符数组来存放一个字符串,这将在数组一章内予以介绍。p字符占一个字节的内存空间。字符串占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符0 (ascii码为0)。这是字符串结束的标志。数据类型整型浮点型(实型)(signed) intunsigned int(signed) short (int)unsigned short (int)(signed) long (i

23、nt)unsigned long (int)floatdoublelong double所占字节数(byte)2244816取值范围-3276832767065535-215(215-1)0(216-1)-231(231-1)0(232-1)-3.410-383.41038-1.710-3081.710308-1.210-49321.2104932turbo c+下基本数据类型取值范围基本数据类型注意:p 同种数据类型在不同的平台所占字节数不尽相同p 用sizeof获知数据类型的长度。p 当数值超过该类型取值范围时,会产生数值溢出(运行时不报错)。p 不同类型浮点型数据,精度不同,会产生舍入误差。p 字符型和整型存在一定关系。数据类型的转换转换方式有两种:自动类型转换;强制类型转换1. 自动类型转换 存储长度较短存储长度较长这种类型转换是由系统自动进行的。数据类型的转换例:int x=2;float y=1.6;char c=a;65(int)c+x*y=?2(int)1.6 (double)3.2(double)68.2(double)数据类型的转换2. 强制类型转换 一般形式为: (类型名) 表达式(double)a 将变量a强制转换为double类型(int)(x+y) 将x+y强制转换为i

温馨提示

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

评论

0/150

提交评论