




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第3章 数据类型、运算符与表达式,漳州师范学院 赵红,C 语言程序设计,5/18/2019,2,教学要求,教学要求:了解C语言中数据类型的分类;掌握整型、实型、字符型、字符串常量的表示方法;掌握符号常量的定义和使用;掌握变量的定义、存放形式、初始化、使用方法;掌握基本算术、强制类型转换、自增、自减、赋值、逗号运算符和表达式;掌握各类数值型数据间的混合运算。 教学重点:整型、实型、字符型常量的表示方法和变量的定义、存放形式、初始化、使用方法;算术、赋值、逗号运算符和表达式。 教学难点:自增、自减运算符和表达式;混合表达式计算。,5/18/2019,3,为什么要指定数据类型?,5/18/2019,4,第3章 C的数据类型,5/18/2019,5,为什么要指定数据类型?,1不同类型的数据在内存中占据不同长度的存储区。 2不同类型的数据取值范围不同。 3不同类型的数据有不同的操作。,C语言对程序中要用到的每一个变量 都要事先指定它的数据类型!,5/18/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 student. “ WHI是符号常量,5/18/2019,7,例3.1 符号常量的使用。 #define PRICE 30 main() int num,total; num=10; total=num * PRICE; printf( “total=%d“, total ); ,格式控制字符串中的普通字符,照原样输出,符号常量,运行结果: total=300,符号常量,符号常量必须先定义后才能用它表示一个数值。 符号常量的值在其作用域内不能改变,也不能再被赋值。 习惯:符号常量名用大写,变量用小写。 好处:含义清楚;“一改全改”,5/18/2019,8,预备知识:标识符P39,用于程序中的变量、符号常量、数组、函数、数据类型等操作对象的名字 由字母、下划线和数字组成的字符序列,1系统定义标识符(关键字) 具有固定名字和特定含义的标识符 2用户定义标识符 用于对用户使用的变量、数组、函数等操作对象进行命名,5/18/2019,9,对标识符的规定,用户定义标识符 必须以字母或下划线“_”开头 不能含有除字母、数字和下划线“_”外的其他字符 标识符中大小写字母含义不同 关键字必须用小写字母。不允许使用关键字为变量、数组、函数等操作对象命名,5/18/2019,10,在程序运行过程中,其值可以被改变的量称为变量。变量的三个要素: (1)变量名。每个变量都必须有一个名字。 (2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。 (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,二进制数值,变量的概念,注意区别变量名和变量值,5/18/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个字节存储单元,将数值5、3分别存放到x、y变量的存储单元,x、y变量的值重新赋值,例:输出变量的数值。,x,y,5/18/2019,12,(1)变量定义的一般格式: 存储类型 数据类型 变量名, 变量名2 ; 例如: int a1, a2, a3; (2)变量初始化: 存储类型 数据类型 变量名=初值, 变量名2=初值2 ; 例如: float a1=2.5, a2=5.23, a3=45.43;,变量 的定义与初始化,5/18/2019,13,整型数据在内存中的存放,数值是以补码表示的。 一个正数的补码与原码相同; 一个负数的补码求法:原码的二进制形式,取反求得反码,再加 1 ,得到负数的补码。 例如:,- 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,整型常量在内存中的存放,5/18/2019,14,3.3.3整型常量的类型p43,方括号表示可选项 int 分配2 Byte,long分配4 Byte,5/18/2019,15,1. 整型常量,整型常量的类型: 根据值大小默认类型。 整型常量后面加l或L,则认为是long int型 例如:123L、0L、432l、0x100l,注意: 十六进制常量中可以使用大写字母AF,也可以使用小写字母af。 八进制常量中不能出现数字 8 或 9 例如:018、0921非法,5/18/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,5/18/2019,17,1. 整型变量分为类: (1)基本整型(int) (2)短整型(short int) (3)长整型(long int) 无符号整型。无符号型又分为(3种): unsigned int unsigned short unsigned long,3.3.2 整型变量(复习),5/18/2019,18,1.实型常量(实数,又称浮点数)表示形式: (1)十进制形式 例如: 3.14 、 9.8 (2)指数形式 E(e) 例如: 3.02+5 34.42367750+7 注意指数形式的写法:P45,3.4.1实型常量,5/18/2019,19,实型变量分类 (1)单精度型变量 float型变量 占4 字节( 32位) 提供 7 位有效数字 值域: (3.4e-383.4e+38) (2)双精度型变量 double型变量 占 8 个字节( 64位) 提供 1516位有效数字 值域: ( 1.7e-3081.7e+308),3.4.2 实型变量,5/18/2019,20,3.4.2 实型变量,类型 说明符 位数 数值范围 单精度 float 32 10-371038 双精度 double 64 10-30710308 长双精度 long double 128 10-4931104932,5/18/2019,21,数值的有效 数字 7 位 尾数7031不是有效数值,3.4.2 实型数据的舍入误差,5/18/2019,22,1.字符常量的定义 用一对单引号括起来的单个字符称为字符常量。 例如: A、7、 等。 2.转义字符 语言还允许使用一种特殊形式的字符常量,就是以反斜杠“ ”开头的转义字符。 n b r t 0 ” ddd xhh 注意:如果反斜杠本身作为字符常量,必须使用转义字符: 、”,3.5 字符数据P48,5/18/2019,23,3.以“ ”开头的字符在printf 函数中控制输出格式: n 换行 t 横向跳格(下一个输出区) b 退格 r 回车 反斜杠字符 “ 双引号 ddd 1到3位8进制数所代表的字符。如:101=A xhh 1到2位16进制数所代表的字符。,3.5.1 字符常量P48,5/18/2019,24,main() printf(“ABC tabc txyz n”); printf(“abcbxyz n”); 程序运行结果如下:,例用转义字符输出字符和不可打印字符,5/18/2019,25,字符变量( 关键字为 char ) 字符变量类型,占用1字节内存单元。 (1) 变量值的存储 将一个字符常量存储到一个字符变量中,实际上是将该字符的 ASCII 码值(无符号整数)存储到内存单元中。 (2) 变量值的特性 字符数据在内存中存储的是字符的 ASCII 码(一个无符号整数),其形式与整数的存储形式一样。,3.5.2 字符变量,5/18/2019,26,char ch1, ch2; /*定义变量:ch1,ch2*/ ch1= a ; /*给字符变量赋值*/ ch2= b ; 字符数据 a 、b 的 ASCII 码值97、98 (一个无符号整数)分别存放在变量ch1, ch2所占用内存存储单元中,其形式与整数的存储形式一样。 ch1 ch2,97,98,3.5.3 字符变量的存储形式,5/18/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 字符变量的使用方法,程序运行结果: ch1=a, ch2=b ch1=97, ch2=98,5/18/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=65,ch2=98 ch1=A,ch2=b,5/18/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!“ “,3.5.4 字符串常量,5/18/2019,30,4. 字符串常量,用双引号括起的一个字符序列 例如:“ABC“、“123“、“a“、 “nt “ “nGood morning“ 字符串常量的长度 : 所包含的字符个数 字符串常量的存储方式:,所占存储单元数:串长度1 例如:,字符串 结束标记,5/18/2019,31,例3.13 输出字符串常量 main() printf(“%sn“, “I say:“Goodbye!“ “); ,3.5.4 字符串常量,运行结果: I say:“Goodbye!“,5/18/2019,32,C语言规定: 在存储字符串常量时,由系统在字符串的末尾自动加一个0作为字符串的结束标志。 如果有一个字符串为“CHINA”,则它在内存中的实际存储如下所示: C H I N A 0 最后一个字符0是系统自动加上的,它占用字节而非字节内存空间。,3.5.3 字符串的存储,5/18/2019,33,例:字符常量 A 与字符串常量 “ A “的区别: (1)定界符不同: 字符常量使用单引号A , 而字符串常量使用双引号 “ “ ; (2)长度不同: 字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数; (3)存储要求不同: 字符常量存储的是字符的ASCII码值, 而字符串常量,除了要存储有效的字符外,还要存储一个结束标志 0 。,3.5.4字符常量与字符串常量的区别,5/18/2019,34,复习:变量定义,变量定义的一般格式: 数据类型说明符 变量列表; 例如:int i, j; long k, m; float x,y; char ch1,ch2;,必须使用合法的标识符作变量名 不能使用关键字为变量命名,5/18/2019,35,总结一下,标识符命名规则 数据基本类型 常量、变量 整型常量 整型变量 实型常量 实型变量 字符常量P48 字符变量 字符串常量,常量 2 5.3, 5e2 a,567,xab “abcdef”,定义变量 int a; float b;double d; char c; a=5; b=3.6; c=f;,5/18/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;,5/18/2019,37,3.7 各类数值型数据间的混合运算,数据类型不同类型数据混合运算时的类型转换 不同类型数据进行混合运算时,C编译器会自动进行类型转换。 为了避免不同的数据类型在运算中出现混淆,应尽量使用同种类型数据。 int i; float f; double d; long e; 10+a+i*f-d/e 结果的类型是?,例:2+2.5=?,5/18/2019,38,数据类型的自动转换 转换原则:,自动将精度低、表示范围小的运算对象类型向精度高、表示范围大的运算对象类型转换,3.7 运算中数据类型的转换,P54,5/18/2019,39,2. 赋值运算中的类型转换, = 小数部分自动补0 int a=23; float f; f=a; f=23.00000, = 自动舍去实型表达式的小数部分(注意不进行四舍五入) P59 例 int i; i=3.56;,5/18/2019,40,数据类型的强制转换,强制转换的一般形式 (类型名) 表达式 例如: (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,5/18/2019,41,3.8 本节所涉及的运算符,+ - * / % + - + - = += -= *= /= %= &= |= = = = ?: , & sizeof (数据类型标识符) P55,5/18/2019,42,运算符的优先级和结合性,优先级 指各种运算符号的运算优先顺序 例如:算术运算优先于关系运算 算术运算中先 * / 后 + -,结合性 指运算符号和运算对象的结合方向 分为:从左向右(左结合)和从右向左(右结合) 例如:算术运算符为左结合 a-b+4 赋值运算符为右结合 a= b = 5 ( C语言规定见教材 P365 附录),4+2*3-2=?,5/18/2019,43,算术运算,算术运算符的优先级,没有乘方运算符,要计算a3要写作 a*a*a 的连乘,或用标准库函数 pow(a, 3) “/”的运算对象可为各种类型数据,但是当进行两个整型数据相除时,运算结果也是整型数据 “%”要求运算对象必须是整型数据,功能是求两数相除的余数,余数的符号与被除数的符号相同。,5/3=1 -5/3=-1(向零取整) 5/-3=-1 5%32 5%-3=2 -5%3=-2,5/18/2019,44,自增自减运算,+ -是单目运算符 有前缀和后缀两种形式 前缀形式: 先自增(自减)再引用; 后缀形式: 先引用再自增(自减); 功能: 前缀形式 + a 等价于 a = a + 1 - a 等价于 a = a 1 后缀形式 a + 等价于 a = a + 1 a - 等价于 a = a 1,表达式的值会不同,5/18/2019,45,例如:,当 a5 时 (1) b=+a 等价于 a=a+1; b=a 表达式的值为6,且 a=6, b=6 (2)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 协议书结婚后逃不掉了
- 顶账车协议书范本
- 石英晶体元器件制造工客户特殊要求传递考核试卷及答案
- 织补师岗位应急处置技术规程
- 球团原料工安全技术规程
- 劳动砺心智 实践促成长-劳动教育主题班会
- 2025年合同终止劳动补偿标准
- 专管员专业知识培训课件
- 广东省广州市番禺区广博学校2026届数学八年级第一学期期末学业质量监测试题含解析
- 买卖合同范本(15篇)
- 2025政治理论时政热点知识试题库附完整答案
- 民间借贷抗诉申请书
- 2025年考研护理综合全程真题及答案
- 学堂在线 知识产权法 章节测试答案
- 小学道德与法治五年级上册《烟酒有危害》教学课件
- 减脂课件教学课件
- 年产3万吨生物基PTT聚合项目环评资料环境影响
- 鸡蛋分拣培训课件
- 2024年长期照护师职业技能竞赛理论考试题库(含答案)
- 桂林旅游学院新生入馆教育学习通超星期末考试答案章节答案2024年
- 火灾原因认定规则 XF1301-2016
评论
0/150
提交评论