C语言 第二章 数据类型、运算符与表达式A

上传人:zw****58 文档编号:51433319 上传时间:2018-08-14 格式:PPT 页数:38 大小:124.50KB
返回 下载 相关 举报
C语言 第二章 数据类型、运算符与表达式A_第1页
第1页 / 共38页
C语言 第二章 数据类型、运算符与表达式A_第2页
第2页 / 共38页
C语言 第二章 数据类型、运算符与表达式A_第3页
第3页 / 共38页
C语言 第二章 数据类型、运算符与表达式A_第4页
第4页 / 共38页
C语言 第二章 数据类型、运算符与表达式A_第5页
第5页 / 共38页
点击查看更多>>
资源描述

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

1、C语言程序设计第2章 数据类型、运算符与表达式本章主要学习任务C的数据类型;2.常量、变量;3. 常用基本数据类型的表示、机内存储、变 量分类;4. 数值型数据混合运算及类型转换规律。2.1 C的数据类型n数据类型:数据的存在或组织形式基本类型指针类型构造类型空类型整型字符型实型枚举型单精度型双精度型数组类型结构体类型共用体类型 注意:C语言中的数据有变量与常量,它们分别 属于上述这些类型。1、不同的数据类型有不同的取值范围。2、不同的数据类型有不同的操作。3、不同的数据类型即使有相同的操作有时 含义也不同。 4、不同的数据类型对计算机可能出现的错 误不同。2.2 常量与变量一、常量: 字面常

2、量 符号常量 (用标识符代表)定义方法: #define PI 3.1415 不是C语句,不必在行末加分号。该命令是用标识符代替一个字符串,不作正 确性检查 使用符号常量的好处:n 含义清楚、见名知意。n 修改方便、一改全改。 二、变量变量必须先定义后使用变量名、变量值、存储单元的关系标识符标准:1、组成:字母、数字、下划线,且首字 符不能为数字合法:abc, _321, _1a,非法: 2aa, a#c,_c.92、长度:3、大写小写不同 SUMsum4、选择标识符的时候要“见名知意” 符号常量与变量的关系符号常量:值在作用域内不能改变,不 能被再赋值;常用大写变量:值是可以改变,可以多次赋

3、值的 ;常用小写2.3 整型数据一、整型常量十进制整数:八进制整数:十六进制整数:注:C语言整常数没有二进制整数形式二、整型变量内存中的存放形式以二进制补码形式存放每个基本整型变量在内存中占4个字节 (VC环境中)整型变量的分类基本类型 int可加修饰符:short 、long、signed、 unsigned整数类型类类型比特数最大取值值范围围signed int 32-231(231-1) unsigned int320(232-1)signed short int16-215(215-1)unsigned short int160(216-1)signed long int32-231(

4、231-1)unsigned long int 320(232-1)3. 整型变量的定义定义格式:数据类型名 变量名;n可定义多个相同类型的变量。各个变量用 “,”分隔。类型说明与变量名之间至少有 一个空格间隔。n最后一个变量名之后必须用“;”结尾。n变量说明必须在变量使用之前。n可以在定义变量的同时,对变量进行初始 化。 4. 整型数据的溢出整型数最大允许值+1,最小允许值-1,会 出现什么情况? 例:短整型数据的溢出 void main() short a=32767,b;b=a+1;printf(“a=%d,b=%dn“,a,b); 三、整型常量的类型 整型常量赋值给整型变量时,如何匹配

5、?n值在-3276832767范围内的整数,可以赋 值给int和short int 、long int型变量。n如果值超过了以上范围,在-2147483648 2147483647范围内,可以赋值给int、long int型变量。2.4 实型数据一、实型常量n十进制小数形式: .123、123.、123.0n 指数形式:e之前必须有数字,e后面指数 必须是整数n规范化的指数形式:字母e之前的小数部 分中,小数点左边应有且只有一位非零数 字二、实型变量实型数据在内存中是以指数形式存放的实型变量的分类单精度 float 4字节双精度 double 8字节长双精度 long double 10字节

6、3. 实型数据的舍入误差因为实型变量的有效位以外的数字将被舍 去,由此会产生误差void main() float a; double b;a=33333.33; b=33333.33333; printf(“a=%f,b=%fn“,a,b); 三、实型常量的类型 实型常量可以赋给float, double, long double ,按变量类型截取实型常量中相应的有效数 字位数注意:n不要试图用一个实数精确表示一个大整数 ,记住:浮点数是不精确的。n实数一般不判断“相等”,而是判断接近或 近似。n根据要求选择单精度、双精度。2.5 字符型数据一、字符常量直接用单引号括起来,使用字符的转义表示

7、法表示(ASCII码表 示) 特殊字符:预先定义的一部分常用的转义字符。如 n 换行,t水平制表。转义表示格式:ddd或xhh(其中ddd,hh 是字符的ASCII码,ddd八进制、hh十六 进制)。 注意:不可写成0xhh或0ddd(整数)。二、字符变量 字符型变量是用来存放字符数据,同时只能 存放一个字符。 定义形式:char a=a,b=b;所有编译系统都规定一个字符变量在内存 中占一个字节。 三、内存中的存储形式 以字符的ASCII码,以二进制形式存放, 占用1个字节。字符型数据和整型数据之间可以通用(当作 整型量)。具体表现为:n可以将整型量赋值给字符变量,也可以将 字符量赋值给整型

8、变量。n可以对字符数据进行算术运算n一个字符数据既可以以字符形式输出,也 可以以整数形式输出。注意:字符型数据作为整数使用范围 0-255(无符号) -128-127(有符号)。例:给字符变量赋以整数(字符型、整型 数据通用) main() /* 字符a的各种表达方法 */ char c1=a;char c2=x61;char c3=141;char c4=97;char c5=0x61;char c6=0141; printf(“c1=%c,c2=%c,c3=%c,c4=%c,c5=%c, c6=%cn“,c1,c2,c3,c4,c5,c6); printf(“c1=%d,c2=%d,c3=

9、%d,c4=%d,c5=% d,c6=%dn“,c1,c2,c3,c4,c5,c6); 四、字符串常量 字符串常量:是一对双引号(“”)括起来的 字符序列。 注意:n字符常量与字符串常量。如“a”和a。nC规定以0(ASCII码为0的字符)作为字 符串结束标志。n不能将字符串赋给字符变量。nC语言没有专门的字符串变量,如果想将 一个字符串存放在变量中,可以使用字符 数组。2.6 变量赋初值C语言允许在定义变量的同时使变量初始 化。可以使被定义的变量的一部分赋初值 对几个变量赋同样的初值: int a=3,b=3,c=3; 错误的赋值表示:int a=b=c=3;2.7 各类数值型数据的混合运算

10、整型、实型、字符型数据之间可以混合运算 进行运算时,不同类型的数据先转换成同一类型 ,然后进行计算 转换的方法:自动转换(隐式转换)强制转换。1.自动动转换(隐式转换)混合运算时,由编译系统自动完成。转换 规则:(参看图2-10)赋值运算,赋值号右边的类型转换为左边 的类型。这种转换是截断型的转换,不会 四舍五入。 2.强制转换 一般形式:(类型说明符)(表达式)功能:把表达式的结果强制转换为类型 说明符所表示的类型。例如(int)a 将a的结果强制转换为整型量 。(int)(x+y) 将x+y的结果强制转换为整型 量。(float)a+b 将a的内容强制转换为浮点数 ,再与b相加。说明:类型

11、说明和表达式都需要加括号(单个 变量可以不加括号)无论隐式转换,强制转换都是临时转换 ,不改变数据本身的类型和值。例:强制类型转换 void main() float f=5.75;printf(“(int)f=%dn“,(int)f);printf(“f=%fn“,f); 2.8 算术运算符和算术表达式C语言运算符:控制语句和输入输出以为 的基本操作都作为运算符处理 P31表达式:使用运算符将常量、变量、函数 连接起来,构成表达式。 一、算术运算符+,-,*,/,% 1.两个整数相除,结果为整数,舍入方式为 “向零取整” 2.求余运算,两侧均应为整型数据,余数的 符号与被求余数符号相同。 二

12、、算术表达式 1. 算术表达式:用算术运算符将运算对象 连接起来的、符合C语法规则的式子。 2. 运算对象可以是常量、变量、函数等。 合法的C表达式:a*b/c-1.5+a 注意:C语言算术表达式的乘号(*)不能省略C语言表达式中只能出现字符集允许的字 符。C语言算术表达式只使用圆括号改变运算 的优先顺序(不要指望用)。3.(算术)运算符的优先级与结合性(P.325 附录)C语言规定了运算符的“优先级”和“结 合性”。优先级别相同,则按规定的“结合方向” 处理。左结合性右结合性对于复杂表达式为了清晰起见可以加圆括 号“()”强制规定计算顺序。四、自增、自减运算符+i,i+ -i,i-注意:前置

13、运算:+i,-i,先自增、减,再参与 运算;后置运算:i+,i-,先参与运算, 再自增 、减。 例如:i=3,分析j=+i; j=i+;自增、减运算符不能用于常量或表达式。五、表达式使用中的问题:1.表达式中子表达式的求值顺序; 2. C编译系统在处理时尽可能多地将若干字 符组成一个运算符(在处理标识符、关键 字时也按同一原则处理); 3. 调用函数时,实参的求值顺序。2.9 赋值运算和赋值表达式一、赋值运算符赋值符号“=”就是赋值运算符 二、类型转换赋值运算时,当赋值运算符两边数据类 型不同时,先将赋值号右边表达式类型转 换为左边变量的类型,然后赋值。1.实型数据赋给整型变量 2. 整型数据

14、赋给实型变量 3.单双精度常量赋值给实型变量 4.字符型赋给整型变量 5.整型数据赋给字符型变量三、复合的赋值运算符 “=”之前加上其他二元运算符,构成复合的 运算符 a+=3;对应于a=a+3;四、赋值表达式 变量=表达式 将赋值运算符右侧的“表达式”的值赋给左侧 的变量,赋值表达式的值就是被赋值的变 量的值2.10 逗号运算符和逗号表达式逗号表达式:用逗号将两个表达式连接起 来形式: 表达式1,表达式2求解过程:自左向右,先求解表达式1,再求解 表达式2,整个逗号表达式的值是表达式2 的值,可以扩展到N个表达式优先级:所有运算符中优先级最低例:a=3*5,a*4注意:函数参数也是用逗号来分隔的

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

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

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