第二章数据类型、运算符与表达式.ppt

上传人:本田雅阁 文档编号:2260227 上传时间:2019-03-12 格式:PPT 页数:38 大小:1.91MB
返回 下载 相关 举报
第二章数据类型、运算符与表达式.ppt_第1页
第1页 / 共38页
第二章数据类型、运算符与表达式.ppt_第2页
第2页 / 共38页
第二章数据类型、运算符与表达式.ppt_第3页
第3页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第二章数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《第二章数据类型、运算符与表达式.ppt(38页珍藏版)》请在三一文库上搜索。

1、C语言程序设计,贾宗福,哈尔滨学院软件学院软件工程专业课程(必修课),第二章 数据类型、运算符与表达式,C语言的数据类型 常量与变量 整型数据 实型数据 字符型数据 算术运算符和算术表达式 C运算符和C表达式,C语言的数据类型,一、数据类型,数据:是程序处理的对象。 例如:整数、实数、字符串、逻辑值。 数据类型:是指将数据根据表达形式的不同而划分的类别。数据类型(数据结构)是指数据的组织形式。规定了一定的取值范围(值域)和在该值域上所进行的各种操作。,一般分为:,二、数据类型分类,指针类型(*) 数组类型( ) 结构体类(struct) 共用体类型(union) 函数类型,基本类型 枚举类型(

2、enum) 派生类型 空类型(void),整型 实型,基本整型(int) 短整型(short int) 长整型(long int) 字符型(char),单精度型(float) 双精度型(double) 长双精度型(long double),C语言的数据类型,一、常量,常量区分为不同的类型 分类:字面常量(直接常量)、符号常量,常量与变量,1定义 在程序运行过程中,其值不发生改变的量称为常量。,说明:,例:字面常量 整型常量:12、0、-3 实型常量:4.6、-1.23; 字符常量:a、b,#define是预处理命令,与语句区分开。它占独立一行,不用分号结束。 标识符的值在其作用域内不能改变(不

3、是变量),也不能再被赋值。 习惯上符号常量名用大写,变量用小写。 使用符号常量的好处是:含义清楚(见名知意);在需要改变一个常量时能做到“一改全改”。,2符号常量,一、常量,格式: #define 标识符 常量 功能:用一个指定的标识符来代表一个常量。,说明:,常量与变量,2符号常量,一、常量,常量与变量,例:,#define PRICE 30 #include void main() int num,total; num=10; total=num * PRICE; printf(“total=%d“,total); ,二、变量,常量与变量,1定义 在程序运行过程中,其值可以改变的量称为变量

4、。,说明:,一个变量应该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放变量的值。 区分变量名、变量地址、存储单元、变量值的关系。 变量名命名原则?,关键字:32个英文单词,系统内具有特定含义,不能另作它用。 标识符:程序员定义的单词,程序正文中的一些实体,包括符号常量名、变量名、函数名、数组名、类型名、文件名等。,二、变量,常量与变量,2标识符的命名原则,(1)C语言的词法记号,以大小写字母或下划线开始; 由字母、数字和下划线三种字符组成; 区分大小写字母; 见名知意,不能与C语言的关键字相同; 标识符长度无统一规定,但最多32个字符。,英文字母:AZ az 数字:09 特殊字符:

5、(空格)!#% &*_(下划线)+ - = / ” ( ) ,二、变量,常量与变量,2标识符的命名原则,(2)C语言的字符集,(3)命名原则,变量必须先定义,后使用。 定义多个同类型的变量时,变量之间用逗号分隔。 凡未被事先定义的,不作为变量名。 指定每一变量属于一个类型,这就便于在编译时,据此检查该变量所进行的运算是否合法。,二、变量,常量与变量,3、定义变量,格式:数据类型名 变量名表;,功能:在编译时按照指定的类型为变量分配相应的存储单元。,说明:,#define PRICE 30 #include main() int num,total; float v ,r,h; num=10;

6、total=num*PRICE; printf(total=%d,total); r=2.5; h=3.2; v=3.14159*r*r*h; printf(”v=%fn”,v); ,变量名: 以字母或下划线 开头,由数字、 字母、下划线构 成。最多32个字 符,多余不识别. 一般小写。,名字常用大写,常量与变量,例:,#define PRICE 30 #include main() int num,total; float v ,r,h; num=10; total=num*PRICE; printf(total=%d,total); r=2.5; h=3.2; v=3.14159*r*r*

7、h; printf(”v=%fn”,v); ,根据值的大小 自动确定类型 十进制:123, 456 八进制:0开头 十六进制:0x开头 无unsigned型, 但非负数可对 unsigned变量赋值,int、unsigned int 2字节 short 【int】 unsigned short 【int】 2字节 long【int】 unsigned long【int】 4字节,整型数据,一、举例说明,二、整型数据的定义及取值范围,类型 定义符 位数 数值范围 I/O格式符 有符号: 基本整型 int 16位 -3276832767 %d 短整型 short 16 同上 %hd 长整型 lon

8、g 32 -231(231-1) %ld 无符号: unsigned int 16 065535 %u unsigned short 16 同上 %hu unsigned long 32 0(232-1) %lu,整型数据,#define PRICE 30 #include main() int num,total; float v ,r,h; num=10; total=num*PRICE; printf(total=%d,tatal); r=2.5; h=3.2; v=3.14159*r*r*h; printf(”v=%fn”,v); ,十进制形式 指数形式:123E3 (123103 )

9、 不区分单、双精 度,赋值时截取有 效长度。如: float a; a=111111.111;,7位有效数字,float 4字节 7位有效数字 double 8字节 15位有效数字 long double 16字节 19位有效数字,实型数据,一、字符常量 单引号括起来的一个字符,如:a, D, ?, $,转义字符:一种特殊形式的字符变量,是以一个“”开头的字符序列。在屏幕上无法显示,在程序中无法表示的字符。 见P_30,二、字符变量 用来存放字符常量,例:char c1,c2; c1=a; c2=A;,字符型数据,三、字符数据在内存中的存储形式 以ASCII码存储,占1字节,四、字符数据的使用

10、方法 字符数据和整型数据之间可以通用,可以按 字符形式输出,也可以按整型输出。,字符数据与整型数据可以互相赋值。,五、字符串常量 例:“CHINA“ “a“ a,所以:char c; c=“a“;,字符型数据,例1,main() char c1,c2; c1=97; c2=98; printf(“%c, %cn“,c1,c2); ,运行结果: a ,b,字符型数据,例2,运行结果: 97 98,main() char c1,c2; c1=97; c2=98; printf(“%d %dn“,c1,c2); ,字符型数据,例3,运行结果: a ,97 a ,97,main() int i; ch

11、ar c; i=a; c=97; printf(“%c,%dn“,c,c); printf(“%c,%dn“,i,i); ,字符型数据,算术运算符与算术表达式,一、算术运算符,1、基本的算术运算符,+ - * / %(取余),(若整数相除,结果取整),说明:/ 整除 若/的两操作数都为整数,则为整除 如:5/2=2 , 5.0/2.0=2.5 例 int i=15; float f ; f=i/10; 结果为:f=1 如果将第三条语句改为 f = i/10.0; 或f = i/-10; 则结果为:f=1.5 ,或f=-1,算术运算符与算术表达式,1、基本的算术运算符,说明:% 取余 求两个整数

12、整除后的余数,余的符号与被除数相同 如:3%4=3 4%4=0 例 #include void main() int n; n=40%5; printf(“n=%dn“,n); n=40%7; printf(“n=%dn“,n); n=40%-7; printf(“n=%dn“,n); n=-40%7; printf(“n=%dn“,n); n=-40%-7;printf(“n=%dn“,n); ,输出结果: n=0 n=5 n=5 n=-5 n=-5,一、算术运算符,算术运算符与算术表达式,2、自增、自减运算符 、,一、算术运算符,+i,-i 在使用i之前,先使i的值加(减)1 i+,i-

13、在使用i之后,使i的值加(减)1,例:#include void main() int i=3,j; j=+i; printf(“j=%d,i=%dn“,j,i); j=i-; printf(“j=%d,i=%dn“,j,i); ,输出结果: j=4,i=4 j=3,i=2,算术运算符与算术表达式,2、自增、自减运算符 、,一、算术运算符,说明:,+、-只能用于变量,而不能用于常量或表达式 +、-的结合方向是“自右至左”,例: 8+ -5 (a+b)+ -(c-4),算术运算符与算术表达式,二、算术表达式,1、算术表达式,用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式

14、子,称C算术表达式。 运算对象包括:常量、变量、函数等。,例如:a+b (a*2)c (x+r)*8-(a+b)7 +i sin(x)+sin(y) (+i)-(j+)+(k-),算术运算符与算术表达式,二、算术表达式,2、运算符的优先级,语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。即按从高到低次序执行。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。,算术运算符的优先级: 先乘除余,后加减 负号、+、-高于乘除余,见书:P302 附录C 运算符和结合性,算术运算符与算术表达式,二、算术表达式,

15、3、运算符的结合性,例如:表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。 这种自左至右的结合方向就称为“左结合性”。,语言中各运算符的结合性分为两种: (1)左结合性:从左至右 (2)右结合性:从右至左(一元、条件运算符、赋值运算符),算术运算符的结合性: 自左至右,即先左后右,而自右至左的结合方向称为“右结合性”。最典型的右结合性运算符+、-和赋值运算符。 例如: -i+ 相当于-(i+) x=y=z 由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。,算术运算符与算术表达式,二、算术表达式,3、运算符的结合性,算术运算符与算术表达式,三、各类数值

16、型数据间的混合运算,1、自动转换,在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的方法有两种,一种是自动转换,一种是强制转换。,整型、实型与字符型数据间可以混合运算,先转换成同一类型,再进行运算,转换规则:,char和short型转换为int型 float型一律转换为double型 整型(包括int,short,long)数据与double型数据进行运算,先将整型转换为double型,字节少的数据转换成字节多的类型,算术运算符与算术表达式,三、各类数值型数据间的混合运算,2、强制类型转换运算符,格式:(类型名)(表达式),功能:是把表达式的运算结果强制转换成类型说明符所表示

17、的类型。,例:(double)a (将a转换成double类型) (int)(x+y) (将x+y的值转换成整型) (float)(5%3) (将5%3的值转换成float型),说明:在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。,算术运算符与算术表达式,三、各类数值型数据间的混合运算,2、强制类型转换运算符,例:强制类型转换。 #include void main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d“,x,i); 结果:x=3.600000,i=3,C运算符和C表达式,一、C运算符,1、按功能分类

18、,(1)算术运算符 + - * / % (2)关系运算符 = = = != (3)逻辑运算符 ! & | (4)位运算符 | & (5)赋值运算符 = 复合赋值 (6)条件运算符 ?: (7)逗号运算符 , (8)指针运算符 * & (9)求字节数运算符 sizeof (10)强制类型转换运算符 (类型) (11)分量运算符 - (12)下标运算符 (13)其他 如函数调用运算符(),C运算符和C表达式,一、C运算符,2、按操作数分类,(1)一元(单目)运算符 操作数 运算符 或 运算符 操作数 (2)二元(双目)运算符 操作数 运算符 操作数 (3)三元(三目)运算符 操作数?操作数:操作数

19、,C运算符和C表达式,二、C表达式,1算术表达式 如:2+6.7*3.5+sin(0.5) 2关系表达式 如:x0,y0 & y0 4赋值表达式 如:a=5.6 5逗号表达式 如:a=3,b=4,c=8,C语言有以下几类表达式:,C运算符和C表达式,三、有关表达式使用中问题的补充说明,产生副作用的原因:引入了具有副作用的运算符。 (1)自增自减(+、-) (2)赋值和复合赋值,在表达式中包含过多的+、-,很容易出错。 C语言中运算符有一个字符和两个字符组成,组合原则是自左而右。 C语言中函数参数的求值顺序是自右而左。,表达式的副作用:,无副作用:在表达式求值过程中,只提取变量的值,不改变变量的

20、值。 有副作用:在表达式求值过程中,不但提取变量的值,还改变变量的值。,目的:提高运算效率。,例:,#include void main() int i,j,k1,k2,k3,k4,k5; i=3; k1=(i+)+(i+)+(i+); printf(“k1=%d,i=%dn“,k1,i); i=3; k2=(+i)+(+i)+(+i); printf(“k2=%d,i=%dn“,k2,i); i=3; j=4; k3=i+j; printf(“k3=%dn“,k3);,C运算符和C表达式,i=3; j=4; k4=(i+)+j; printf(“k4=%dn“,k4); i=3; j=4; k5=i+(+j); printf(“k5=%dn“,k5); i=3; printf(“%d,%dn“,i,i+); ,运行结果: k1=9 , i=6 k2=15 , i=6 k3=7 k4=7 k5=8 4 , 3,C运算符和C表达式,作 业,复习: 第2章 数据类型、运算符与表达式 做题:习题二 准备:上机讲授和书上的例题、习题二 实验2 数据的存储与运算 预习:第3章 顺序程序设计,第2章 数据类型、运算符与表达式,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1