提交西电出版社课件 第2章 数据类型和表达式

上传人:E**** 文档编号:89387199 上传时间:2019-05-24 格式:PPT 页数:84 大小:1.60MB
返回 下载 相关 举报
提交西电出版社课件 第2章 数据类型和表达式_第1页
第1页 / 共84页
提交西电出版社课件 第2章 数据类型和表达式_第2页
第2页 / 共84页
提交西电出版社课件 第2章 数据类型和表达式_第3页
第3页 / 共84页
提交西电出版社课件 第2章 数据类型和表达式_第4页
第4页 / 共84页
提交西电出版社课件 第2章 数据类型和表达式_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《提交西电出版社课件 第2章 数据类型和表达式》由会员分享,可在线阅读,更多相关《提交西电出版社课件 第2章 数据类型和表达式(84页珍藏版)》请在金锄头文库上搜索。

1、C/C+语言程序设计,第二章 数据类型和表达式,龚尚福,贾澎涛主编 C/C+语言程序设计 西安电子科技大学出版社,第2章 数据类型和表达式,2.1 词法构成 2.2 数据类型 2.3 常量与变量 2.4 指针类型 2.5 运算符和表达式 2.6 小结,第2章 数据类型和表达式,2.1 词法构成 字符集 标识符 关键字 注释符,字符集,C语言的字符集是ASCII字符集的一个子集,由字母,数字,标点符号和特殊字符构成。 (1)英文字母:az,AZ (2)数字:09 (3)空白符:空格符,制表符,换行符等统称为空白符。 (4)特殊字符: 标点符号 转义字符,字符集,表2.1 常用转义字符表,标识符,

2、C语言规定,标识符只能是字母(AZ,az)、数字(09)、下划线( _ )组成的字符串,并且第一个字符必须是字母或下划线。,注意 (1)C语言中标识符严格区分大小写 (2)ANSI C标准规定标识符的长度可达31个字符 (3)标识符命名应“见名知义”; (4)变量名都要“先定义,后使用”。,关键字,ANSI C定义的关键字共32个,根据关键字的作用,可将其分为数据类型关键字、控制语句关键字、存储类型关键字和其它关键字四类 Microsoft C在ANSI C基础上扩展的关键字有(19个),注释符,C语言的注释符是以 “/*”开头,并以 “*/”结尾,其间的内容为注释,一般出现在程序语句行之后,

3、用来帮助阅读程序。,数据类型,基本类型,构造类型,指针类型(),空类型(void),字符型(char),枚举类型(enum),数组类型( ),结构体类型(struct),共用体类型(union),整型,实型,单精度型(float),双精度型(double),2.2数据类型,基本整型,长整型,短整型,无符号整型,整数类型,整型数就是通常使用的整数,分为带符号整数和无符号整数两大类。 1. 基本类型定义 类型说明符:int 例如,int a,b,c; 说明变量a,b,c被同时定义为基本整型数据类型。,整数类型,2. 整型数据的存储与取值范围,表2.2 Visual C+ 6.0 环境中整型数据属性

4、表,整数类型,3. 整型数据的表示形式 十进制整数:254,-127,0都是正确的,而0291(不能有前导0)、23D (含有非十进制数码)都是非法的; 八进制整数:021,-017都是正确的,它们分别代表十进制整数17,-15,而256(无前缀0)、03A2(包含了非八进制数码)是非法的; 十六进制整数:0x12,-0x1F都是正确的,它们分别代表十进制整数18,31, 而5A (无前缀0x)、0x3H (含有非十六进制数码)是非法的。,实数类型,1. 基本类型定义 类型说明符:float(单精度型),double(双精度型),long double(长双精度型) 2. 实数存储与取值范围

5、在计算机中,实数是以浮点数形式存储的,所以通常将单精度实数称为浮点数。例如单精度实型数据在计算机中的存放形式见图2.1所示。其中,小数部分一般都采用规格化的数据形式。 图2.1单精度实型数据在计算机中的存放形式,实数类型,表2.3 MicroSoft C中实型数据属性表,实数类型,3. 浮点数的表示形式 在C语言中,实数表示只采用十进制。它有二种形式: 十进制数形式和指数形式。 (1)十进制数形式。由整数、小数部分和小数点组成,整数和小数都是十进制形式。例如,0.123,-125.46,.78,80.0等都是合法形式。 (2)指数形式。由尾数、指数符号e或E和指数组成,尾数是小数点左边有且只有

6、一位非零数字的实数。e或E前面必须有数字,e或E后面必须是整数。指数形式用于表示较大或者较小的实数。,字符类型,1. 基本类型定义 类型说明符:char 2. 字符型数据存储与取值范围 字符型数据的取值范围:ASCII码字符集中的可打印字符。字符数据存储占1个字节,存储时实际上存储的是对应字符的ASCII码值(即一个整数值)。,字符类型,3. 字符型数据的表示方法 字符型数据在计算机中存储的是字符的ASCII码值的二进制形式,一个字符的存储占用一个字节。因为ASCII码形式上就是0 到255之间的整数,因此C语言中字符型数据和整型数据可以通用。,字符类型,字符数据:指用单引号括起来的单个字符数

7、据,如A , %, :,9等。而12或abc是不合法的字符数据。 字符串数据:指用双引号括起来的单个或一串字符数据,如“good“、“0132“、“w1“、“a“等。注意“a“是字符串数据而不是字符数据。 为了便于C程序判断字符串是否结束,系统对每个字符串数据存储时都在末尾添加一个结束标志即ASCII码值为0的空操作符0,它既不引起任何动作也不会显示输出,所以存储一个字符串的字节数应该是字符串的长度加1。,字符类型,例如“hello“在计算机中表示形式如图2.3所示:,图2.3 “hello“在计算机中的存储示意图,2.3常量与变量,2.3.1常量 常量 程序运行过程中不能被改变的量。 整数在

8、计算机中是准确表示的,可以用十进制、八进制和十六进制数表示。当用八进制数表示时,第一位数字前面必须加0;当用十六进制数表示时,第一位数字前而必须加0x:无符号整数的末尾必须加字母u或U;长整数的末尾必须加字母I或L。 字符型常数是用单引号括住的单个字符。用转义字符表示不可显示字符。转义字符以“”开头,后跟一个特定的字母或八进制数或十六进制数表示的ASCII代码值。,2.3常量与变量,符号常数是用标识符表示的常数,它具有变量的外表和常量的内涵。 用#define定义的符号常数没有类型和值的含义。在预编译时由编译系统将宏名用宏体替换。 define是编译预处理命令,不属于C语言关键字。 用cons

9、t定义的符号常数既有值又有类型的含义。该定义是在编译阶段完成的。,2.3.2 变量,1. 变量的有关概念 在程序运行过程中,其值改变的数据,称为变量,变量用标识符表示,称为变量名。 变量必须“先定义后使用” 系统为变量分配存储单元,存储变量的值。 编写程序时通过变量名来存、取变量值。,例如: 有变量x 它的值是98,2. 变量定义,变量定义的一般格式: 例如:int i, j; long k, m; float x,y; char ch1,ch2;,必须使用合法的标识符作变量名 不能使用关键字为变量命名 分号是语句的组成部分 C语言的变量名和它的类型无关; 在函数或复合语句中必须把要定义的变量

10、全部定义,即不允许在后面的执行语句中插入变量的定义。,【类型修饰符】数据类型 变量表;,5. 变量的初始化,允许在说明变量的时候对变量赋初值。 例如:int a=5,b=10+2; double x=23.568,y ; char ch1=a,ch2=66,ch3=142; 表示定义变量并对变量存储单元赋值。 错误的初始化: int a=3+b,b=5; float m=n=23.16;,5. 变量的初始化,(1)注意变量在赋值或运算时,其值要在该数据类型的值域内,否则会产生数据溢出。 (2)由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去,由此

11、可能会产生一些误差。 (3)字符型数据与整型数据可通用,增加了程序设计的自由度,例如对字符作多种转换就比较方便。但也需注意,字符型数据与整型数据的通用是有条件的,即在0255的范围之内才可以通用。,5. 变量的初始化,【例2.1】 整型数据的溢出。 #include “stdio.h“ void main() short int a,b; a=32767; b=a+1; printf(“a:%d,b:%d“ , a , b); ,运行结果为: a:32767, b:-32768,5. 变量的初始化,【例2.2】 实型数据的舍入误差。 #include “stdio.h“ void main()

12、 float a,b,c,d; a=12345.6789e3; b=12345.6784e3; c=a+10;/*理论值应是12345688.900000*/ d=b+10;/*理论值应是12345688.400000*/ printf(“c=%fn“, c); /*实型变量只能保证的有效数字是7位有效数字,运行结果是理论结果四舍五入得到的*/ printf(“d=%fn“, d); ,运行结果 c=12345689.000000 d=12345688.000000,5. 变量的初始化,【例2.3】计算字符B与整型数据20的和。 #include “stdio.h“ void main() c

13、har a; /* 说明a为字符型变量 */ int b; /* 说明b为整型变量 */ a=B; /* 为a赋字符常量B */ b=a+20; /* 计算66+20并赋值给字符变量b */ printf(“%c,%d,%c,%dn“,a,a,b,b); /* 分别以字符型和整型两种格式输出a、b */ ,程序运行的输出结果如下: B,66,V,86,2.4 指针和指针变量,main() float x; int y; ,2.4.1 指针和指针变量的概念,变量的两个物理意义,变量的内容,变量的地址,2.4.1指针和指针变量的概念,void main() int a,b,c; a=5; b=3;

14、 c=a +b; ,2000 2001 2002 2003 2004 2005,a b c,8,利用变量名存取数据的方式称为“直接存取”方式。,2.4.1指针和指针变量的概念,C 语言还提供了对内存单元的“间接存取”方式,5,3,2004,a和b相加的结果(*p=a+b)存放到变量p所指向的内存单元中去。此时c称为指针变量p的目标变量。,p=&c,8,void main() int a=5,b=3,c,*p; p = ,变量的地址称为变量的指针 存放地址的变量称为指针变量,2.4.2指针变量的定义,void main() int a,*p= ,2004,2000,指针变量初始化,2.4.2指针

15、变量的定义,指针变量的引用 关于对指针变量的引用,通过上述已经出现的两个相关的运算符进行说明。 (1)*:称为指针运算符或称为“间接访问内存地址”运算符;在定义时,通过它标明某个变量被定义为指针变量,而在使用时,*p则表示p所指向变量的内容。 (2)&:称为取地址运算符,通过它获得目标变量所在存储单元的地址。,2.5 运算符和表达式,主要内容: 算术运算符和算术表达式 赋值运算符和赋值表达式 关系运算符和关系表达式 逻辑运算符和逻辑表达式 位运算符和位运算表达式 条件运算符和条件表达式 逗号运算符和逗号表达式 其他运算符及其运算,运算符的有关概念,作用: 对运算对象完成规定的操作运算 类型:

16、按运算对象分: 单目、双目、三目 按功能分: 算术、赋值、关系、逻辑 条件、逗号、位、其他,运算符的优先级和结合性,优先级 指各种运算符号的运算优先顺序 例如:算术运算优先于关系运算 算术运算中先 * / 后 + -,结合性 指运算符号和运算对象的结合方向 分为:从左向右(左结合)和从右向左(右结合) 例如:算术运算符为左结合 a-b+4 赋值运算符为右结合 a= b = 5,运算符的优先级和结合性,表2.6 运算符优先级和结合性,运算符的优先级和结合性,运算符的优先级和结合性,运算符的优先级和结合性,表达式的有关概念,什么是表达式 表达式由运算符和操作数组成,操作数是运算符的操作对象,可以是常量、变量、函数和表达式。 表达式的书写 C语言的表达式采用线性形式书写。 数学表达式 应该写成 1/6-i+j*j*j*j*j*j。 C语言的表达式只能使用C语言中合法的运算符和操作数 2

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

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号