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

上传人:本田雅阁 文档编号:3426532 上传时间:2019-08-24 格式:PPT 页数:50 大小:347.54KB
返回 下载 相关 举报
第3章数据类型运算符与表达式.ppt_第1页
第1页 / 共50页
第3章数据类型运算符与表达式.ppt_第2页
第2页 / 共50页
第3章数据类型运算符与表达式.ppt_第3页
第3页 / 共50页
第3章数据类型运算符与表达式.ppt_第4页
第4页 / 共50页
第3章数据类型运算符与表达式.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

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

1、1,第3章 数据类型、运算符与表达式,漳州师范学院 赵红,C 语言程序设计,8/24/2019,2,教学要求,教学要求:了解C语言中数据类型的分类;掌握整型、实型、字符型、字符串常量的表示方法;掌握符号常量的定义和使用;掌握变量的定义、存放形式、初始化、使用方法;掌握基本算术、强制类型转换、自增、自减、赋值、逗号运算符和表达式;掌握各类数值型数据间的混合运算。 教学重点:整型、实型、字符型常量的表示方法和变量的定义、存放形式、初始化、使用方法;算术、赋值、逗号运算符和表达式。 教学难点:自增、自减运算符和表达式;混合表达式计算。,8/24/2019,3,为什么要指定数据类型?,8/24/201

2、9,4,第3章 C的数据类型,8/24/2019,5,为什么要指定数据类型?,1不同类型的数据在内存中占据不同长度的存储区。 2不同类型的数据取值范围不同。 3不同类型的数据有不同的操作。,C语言对程序中要用到的每一个变量 都要事先指定它的数据类型!,8/24/2019,6,常量的分类,常量的定义: 常量的分类:直接常量,符号常量 表达形式: (1)整型常量 6、432、76543、546783424 (2)实型常量 2.23、546.2487615247 、 3.057439+5 (3)字符常量 a 、 6 、 M (4)符号常量 WHI #define WHI “I am a studen

3、t. “ WHI是符号常量,8/24/2019,7,例3.1 符号常量的使用。 #define PRICE 30 main() int num,total; num=10; total=num * PRICE; printf( “total=%d“, total ); ,格式控制字符串中的普通字符,照原样输出,符号常量,运行结果: total=300,符号常量,符号常量必须先定义后才能用它表示一个数值。 符号常量的值在其作用域内不能改变,也不能再被赋值。 习惯:符号常量名用大写,变量用小写。 好处:含义清楚;“一改全改”,8/24/2019,8,预备知识:标识符P39,用于程序中的变量、符号常

4、量、数组、函数、数据类型等操作对象的名字 由字母、下划线和数字组成的字符序列,1系统定义标识符(关键字) 具有固定名字和特定含义的标识符 2用户定义标识符 用于对用户使用的变量、数组、函数等操作对象进行命名,8/24/2019,9,对标识符的规定,用户定义标识符 必须以字母或下划线“_”开头 不能含有除字母、数字和下划线“_”外的其他字符 标识符中大小写字母含义不同 关键字必须用小写字母。不允许使用关键字为变量、数组、函数等操作对象命名,8/24/2019,10,在程序运行过程中,其值可以被改变的量称为变量。变量的三个要素: (1)变量名。每个变量都必须有一个名字。 (2)变量值。在程序运行过

5、程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。 (3)变量的类型 例如: int a=23; a (2个字节) 变量的类型 int 变量名字:a 变量的值:23 在内存中存储单元占16位,0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1,二进制数值,变量的概念,注意区别变量名和变量值,8/24/2019,11,main() int x, y; x=5; y=3; printf(“ %d- %dn”, x, y); x=1; y=2; printf(“ %d- %dn”, x, y); 运行结果: 5- 3 1- 2,x、y是整型变量 每个变量分配2个字节存储单元,

6、将数值5、3分别存放到x、y变量的存储单元,x、y变量的值重新赋值,例:输出变量的数值。,x,y,8/24/2019,12,(1)变量定义的一般格式: 存储类型 数据类型 变量名, 变量名2 ; 例如: int a1, a2, a3; (2)变量初始化: 存储类型 数据类型 变量名=初值, 变量名2=初值2 ; 例如: float a1=2.5, a2=5.23, a3=45.43;,变量 的定义与初始化,8/24/2019,13,整型数据在内存中的存放,数值是以补码表示的。 一个正数的补码与原码相同; 一个负数的补码求法:原码的二进制形式,取反求得反码,再加 1 ,得到负数的补码。 例如:,

7、- 8 的原码,1 0 00 00 00 00 00 10 00,求反码,1 1 11 11 11 11 11 01 11,补码,11 11 11 11 11 11 10 00,整型常量在内存中的存放,8/24/2019,14,3.3.3整型常量的类型p43,方括号表示可选项 int 分配2 Byte,long分配4 Byte,8/24/2019,15,1. 整型常量,整型常量的类型: 根据值大小默认类型。 整型常量后面加l或L,则认为是long int型 例如:123L、0L、432l、0x100l,注意: 十六进制常量中可以使用大写字母AF,也可以使用小写字母af。 八进制常量中不能出现数

8、字 8 或 9 例如:018、0921非法,8/24/2019,16,#include main() printf(“0x80 -%d n“, 0x80); printf(“0200 -%d n“,0200); printf(“128 - %d n“,128); printf(“128 - %o n“,128); ,不输出前缀数字,例 输出不同进制整型常量,实战,运行结果: 0x80 -128 0200 -128 128 - 128 128 - 200,8/24/2019,17,1. 整型变量分为类: (1)基本整型(int) (2)短整型(short int) (3)长整型(long int

9、) 无符号整型。无符号型又分为(3种): unsigned int unsigned short unsigned long,3.3.2 整型变量(复习),8/24/2019,18,1.实型常量(实数,又称浮点数)表示形式: (1)十进制形式 例如: 3.14 、 9.8 (2)指数形式 E(e) 例如: 3.02+5 34.42367750+7 注意指数形式的写法:P45,3.4.1实型常量,8/24/2019,19,实型变量分类 (1)单精度型变量 float型变量 占4 字节( 32位) 提供 7 位有效数字 值域: (3.4e-383.4e+38) (2)双精度型变量 double型变

10、量 占 8 个字节( 64位) 提供 1516位有效数字 值域: ( 1.7e-3081.7e+308),3.4.2 实型变量,8/24/2019,20,3.4.2 实型变量,类型 说明符 位数 数值范围 单精度 float 32 10-371038 双精度 double 64 10-30710308 长双精度 long double 128 10-4931104932,8/24/2019,21,数值的有效 数字 7 位 尾数7031不是有效数值,3.4.2 实型数据的舍入误差,8/24/2019,22,1.字符常量的定义 用一对单引号括起来的单个字符称为字符常量。 例如: A、7、 等。 2

11、.转义字符 语言还允许使用一种特殊形式的字符常量,就是以反斜杠“ ”开头的转义字符。 n b r t 0 ” ddd xhh 注意:如果反斜杠本身作为字符常量,必须使用转义字符: 、”,3.5 字符数据P48,8/24/2019,23,3.以“ ”开头的字符在printf 函数中控制输出格式: n 换行 t 横向跳格(下一个输出区) b 退格 r 回车 反斜杠字符 “ 双引号 ddd 1到3位8进制数所代表的字符。如:101=A xhh 1到2位16进制数所代表的字符。,3.5.1 字符常量P48,8/24/2019,24,main() printf(“ABC tabc txyz n”); p

12、rintf(“abcbxyz n”); 程序运行结果如下:,例用转义字符输出字符和不可打印字符,8/24/2019,25,字符变量( 关键字为 char ) 字符变量类型,占用1字节内存单元。 (1) 变量值的存储 将一个字符常量存储到一个字符变量中,实际上是将该字符的 ASCII 码值(无符号整数)存储到内存单元中。 (2) 变量值的特性 字符数据在内存中存储的是字符的 ASCII 码(一个无符号整数),其形式与整数的存储形式一样。,3.5.2 字符变量,8/24/2019,26,char ch1, ch2; /*定义变量:ch1,ch2*/ ch1= a ; /*给字符变量赋值*/ ch2

13、= b ; 字符数据 a 、b 的 ASCII 码值97、98 (一个无符号整数)分别存放在变量ch1, ch2所占用内存存储单元中,其形式与整数的存储形式一样。 ch1 ch2,97,98,3.5.3 字符变量的存储形式,8/24/2019,27,(3)一个字符型数据,既可以字符形式输出,也可 以整数形式输出。 例:字符变量的字符形式输出和整数形式输出。 main() char ch1, ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,ch1,ch2); ,3.5.3 字符变量的使用方法

14、,程序运行结果: ch1=a, ch2=b ch1=97, ch2=98,8/24/2019,28,(4)允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算。 例3.11 字符数据的算术运算。 main() char ch1, ch2; ch1=a; ch2=B; /*等价于 ch1=97;ch2=66;*/ printf(“ch1=%d”,ch1-32); /*字母的大小写转换*/ printf(“ch2=%d n”,ch2+32); printf(“ch1=%c,ch2=%cn”,ch1-32, ch2+32); ,3.5.3 字符变量的使用方法,运行结果: ch1=6

15、5,ch2=98 ch1=A,ch2=b,8/24/2019,29,(1)字符串常量的概念和字符串长度 字符串常量:是用一对双引号括起来的若干字符序列。 字符串长度:字符串中字符的个数称为。 空串: 长度为0的字符串(即一个字符都没有的字符串),表示为“” (一对紧连的双引号)。 例如字符串常量: “How do you do.” 长度为14(空格也是一个字符) “Good morning.” 长度为13 如果反斜杠和双引号作为字符串中的有效字符,则必须使用转义字符。例 C:msdosv6.22 “C: msdos v6.22“ I say:“Goodbye!“ “I say:“Goodbye

16、!“ “,3.5.4 字符串常量,8/24/2019,30,4. 字符串常量,用双引号括起的一个字符序列 例如:“ABC“、“123“、“a“、 “nt “ “nGood morning“ 字符串常量的长度 : 所包含的字符个数 字符串常量的存储方式:,所占存储单元数:串长度1 例如:,字符串 结束标记,8/24/2019,31,例3.13 输出字符串常量 main() printf(“%sn“, “I say:“Goodbye!“ “); ,3.5.4 字符串常量,运行结果: I say:“Goodbye!“,8/24/2019,32,C语言规定: 在存储字符串常量时,由系统在字符串的末尾自

17、动加一个0作为字符串的结束标志。 如果有一个字符串为“CHINA”,则它在内存中的实际存储如下所示: C H I N A 0 最后一个字符0是系统自动加上的,它占用字节而非字节内存空间。,3.5.3 字符串的存储,8/24/2019,33,例:字符常量 A 与字符串常量 “ A “的区别: (1)定界符不同: 字符常量使用单引号A , 而字符串常量使用双引号 “ “ ; (2)长度不同: 字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数; (3)存储要求不同: 字符常量存储的是字符的ASCII码值, 而字符串常量,除了要存储有效的字符外,还要存储一个结束标志 0 。,3.

18、5.4字符常量与字符串常量的区别,8/24/2019,34,复习:变量定义,变量定义的一般格式: 数据类型说明符 变量列表; 例如:int i, j; long k, m; float x,y; char ch1,ch2;,必须使用合法的标识符作变量名 不能使用关键字为变量命名,8/24/2019,35,总结一下,标识符命名规则 数据基本类型 常量、变量 整型常量 整型变量 实型常量 实型变量 字符常量P48 字符变量 字符串常量,常量 2 5.3, 5e2 a,567,xab “abcdef”,定义变量 int a; float b;double d; char c; a=5; b=3.6;

19、 c=f;,8/24/2019,36,3.6表达式-变量赋初值:,允许在说明变量的时候对变量赋初值。 例如: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;,8/24/2019,37,3.7 各类数值型数据间的混合运算,数据类型不同类型数据混合运算时的类型转换 不同类型数据进行混合运算时,C编译器会自动进行类型转换。 为了避免不同的数据类型在运算中出现混淆,应尽量使用同种类型数据。 int i; floa

20、t f; double d; long e; 10+a+i*f-d/e 结果的类型是?,例:2+2.5=?,8/24/2019,38,数据类型的自动转换 转换原则:,自动将精度低、表示范围小的运算对象类型向精度高、表示范围大的运算对象类型转换,3.7 运算中数据类型的转换,P54,8/24/2019,39,2. 赋值运算中的类型转换, = 小数部分自动补0 int a=23; float f; f=a; f=23.00000, = 自动舍去实型表达式的小数部分(注意不进行四舍五入) P59 例 int i; i=3.56;,8/24/2019,40,数据类型的强制转换,强制转换的一般形式 (类

21、型名) 表达式 例如: (int)( b+3*x)%3 1/(float)a+6,注意: (float) 22/5 与 (float) (22/5) 不同 P57 例3.8(只是产生了中间变量,x本身不变),形式: 隐式转换 (由系统自动进行) 显式转换 (强制类型转换),5/2=2 5/2.0=2.500000,8/24/2019,41,3.8 本节所涉及的运算符,+ - * / % + - + - = += -= *= /= %= &= |= = = = ?: , & sizeof (数据类型标识符) P55,8/24/2019,42,运算符的优先级和结合性,优先级 指各种运算符号的运算优

22、先顺序 例如:算术运算优先于关系运算 算术运算中先 * / 后 + -,结合性 指运算符号和运算对象的结合方向 分为:从左向右(左结合)和从右向左(右结合) 例如:算术运算符为左结合 a-b+4 赋值运算符为右结合 a= b = 5 ( C语言规定见教材 P365 附录),4+2*3-2=?,8/24/2019,43,算术运算,算术运算符的优先级,没有乘方运算符,要计算a3要写作 a*a*a 的连乘,或用标准库函数 pow(a, 3) “/”的运算对象可为各种类型数据,但是当进行两个整型数据相除时,运算结果也是整型数据 “%”要求运算对象必须是整型数据,功能是求两数相除的余数,余数的符号与被除

23、数的符号相同。,5/3=1 -5/3=-1(向零取整) 5/-3=-1 5%32 5%-3=2 -5%3=-2,8/24/2019,44,自增自减运算,+ -是单目运算符 有前缀和后缀两种形式 前缀形式: 先自增(自减)再引用; 后缀形式: 先引用再自增(自减); 功能: 前缀形式 + a 等价于 a = a + 1 - a 等价于 a = a 1 后缀形式 a + 等价于 a = a + 1 a - 等价于 a = a 1,表达式的值会不同,8/24/2019,45,例如:,当 a5 时 (1) b=+a 等价于 a=a+1; b=a 表达式的值为6,且 a=6, b=6 (2)b=a+ 等

24、价于 b=a; a=a+1 表达式的值为5,且 a=6, b=5,8/24/2019,46,说明:,+ 和 - 的运算对象只能是变量(或运算结果是变量的表达式), 不能是常量(或运算结果是数值的表达式)。 例如: 5+、(a+2)+ 不合法。 具有右结合性,结合方向为从右到左。 例如: a+ 等价于 -(a+),实战,8/24/2019,47,赋值运算,赋值运算符(右结合) = += -= *= /= %= &= |= = = = 赋值表达式 将表达式的值存入变量对应的内存单元中 m=12 a*=3 等价于 a=a*3 C+=1 等价于 CC+1 m%=3+n 等价于 m=m%(3+n),8/

25、24/2019,48,说明:,赋值号左边必须是变量,右边可以是C语言任意合法的表达式 例如:n= t +2s 合法 a+ b = 15 不合法 赋值号与数学中的等号含义不同 例如:数学中 a=b 等价于 b=a C语言中 a=b 不等价于 b=a,实战,8/24/2019,49,逗号表达式运算,逗号表达式的一般形式 表达式1,表达式2,表达式n 逗号表达式的值(优先级别最低) 从左向右,依次对表达式求值,最后得到表达式n 的值就是逗号表达式的值,例如: a=5, a+, a* 3 表达式值为 18,且a=6 t=1, t+5, t+ 表达式值为 1,且t=2 x=(a=3*5, a*4 ) 赋值表达式的值为60,且x=60, a=15 x=a=3*5,a*4 表达式值为 60,且x=15,8/24/2019,50,本章主要内容,本章介绍C语言的基础,包括: 数据类型 运算符和表达式 均是程序设计的基本知识 为什么讨论这些知识?,通常程序要对数据进行操作处理: 处理的对象是数据 通过运算符和表达式进行操作,

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

当前位置:首页 > 其他


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