数据类型运算符与表达式.ppt_第1页
数据类型运算符与表达式.ppt_第2页
数据类型运算符与表达式.ppt_第3页
数据类型运算符与表达式.ppt_第4页
数据类型运算符与表达式.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章 数据类型、 运算符 与表达式 第 三 章 数据类型、运算符与表达式 1 第3章 数据类型、 运算符 与表达式 一、C的数据类型 二、常量与变量 三、基本数据类型 四、运算符与表达式 主要内容 2 第3章 数据类型、 运算符 与表达式 一、C的数据类型 (一) 什么是数据类型? (二) C语言的数据类型有哪些? 3 第3章 数据类型、 运算符 与表达式 (一) 什么是数据类型? 数据结构+算法=程序 C语言中以 “数据类型”形式存在 另外还可以构造复杂的数据结构 对数据的描述对操作的描述 4 第3章 数据类型、 运算符 与表达式 数据类型 基本类型 整型 字符型 浮点型 枚举类型 构造类型 数组类型 结构体类型 共用体类型 指针类型 空类型 单精度型 双精度型 在程序中对用到的 所有数据都必须指 定其数据类型. ? 不同类型的数据,所占 内存的字节数不同, 对 应的操作也不相同。 (二) C的数据类型 5 第3章 数据类型、 运算符 与表达式 (一) 常 量 (二) 变 量 二、常量与变量 6 第3章 数据类型、 运算符 与表达式 概念 在程序运行过程中,其值不能被改变的量。 分类 字面常量(直接常量): 12 -44.6 a “Hello! “ 符号常量:用一个标识符代表一个常量。 字符串常量 符号常量 的定义 格式:#define 常量名 字面常量 举例:#define PRICE 100 #define PI 3.14 #define C1 a 习惯上常量名用大写, 变量名用小写。 意义 1、含义清楚。 2、在需要改变一个常量时,能够做到“一改全改”。 符号常量的定义放在 函数外面。 (一) 常量 7 第3章 数据类型、 运算符 与表达式 常量举例(求某商品总价) #include #define PRICE 100 /定义符号常 量 void main() int sum; sum=PRICE*20; printf(“%dn“,sum); 单价 符号常量 数量 直接常量 8 第3章 数据类型、 运算符 与表达式 概念其值可以改变的量称为变量。 (二)变量 要素 (1)变量名。每个变量都必须有 一个名字变量名,变量命名遵 循标识符命名规则。 (2)变量值。在程序运行过程中 ,变量值存储在内存中。在程序 中,通过变量名来引用变量的值 。 9 第3章 数据类型、 运算符 与表达式 标识符 identifier 1、标识符就是一个名字(如常量名、变量 名、函数名)。 2、组成:只能由字母、数字、下划线组成 。且第一个字符必须为字母或下划线。 3、长度:标识符的有效长度随系统而异, 如果超长,则超长部分被舍弃。VC+6.0中 规定最大长度为247个字符。Turbo C中的 最大字符长度为32. 4、标识符命名的良好习惯见名知意 例如,name(姓名)、age(年龄) 10 第3章 数据类型、 运算符 与表达式 下列标识符是否合法,为什么? sum a1 b2 s_name 123 #ss a.b.c 1a8bc 思 考 ? 合法 不合法 11 第3章 数据类型、 运算符 与表达式 变量定义数据类型 变量名, 变量名2; int a1,a2; float x1,x2; double y1,y2; char c1,c2; 习惯上,变量名用小写字母。 常量名用大写字母。 12 第3章 数据类型、 运算符 与表达式 方式: 1、定义变量的同时赋初值(也叫变量初始化)。 格式: 数据类型 变量名=初值, 变量名2=初值2; 2、通过一个赋值语句给变量赋初值。 格式 : 变量名=初值; 变量赋初值 出现在函数体 的声明部分 出现在函数体 的执行部分 int a,b=3; int a,b; b=3; 13 第3章 数据类型、 运算符 与表达式 1、程序中用到的变量必须“先定义(declare),后 使用”。 2、C语言的关键字不能用作变量名。 3、C语言对英文字母的大小写敏感,即同一字母的 大小写,被认为是两个不同的字符。对于变量的定 义而言,int i,I;是定义了两个不同的变量。 4、定义变量时,给几个变量赋相同的初值, 应写成 : int a=3,b=3,c=3; 不能写成: int a=b=c=3; 5、给变量赋值时,正常情况下应给变量赋相同类 型的数据。若给变量赋与其类型不同的数据时,需 进行类型转换。 关于变量以及变量赋初值的几点说明 14 第3章 数据类型、 运算符 与表达式 变量举例 include void main() int student,age; int if=adrress=1; float score=90; stadent=2; Age=20.7; printf(“%d %d %d %f“,if,student,age,score); 本程序中有 几处错误? undeclared identifier 15 第3章 数据类型、 运算符 与表达式 (一) 整数类型 (二) 浮点类型 (三) 字符类型 (四) 不同类型数据间的转换 三、基本数据类型 16 第3章 数据类型、 运算符 与表达式 (一) 整数类型变量 分类及取 值范围 类型比特数范围 int signed int 16 -3276832767(215-1) unsigned int 16 065535 short int signed short int 16 -3276832767(215-1) unsigned short int 16 065535 long int signed long int 32 -2147483648 2147483647 unsigned long int 32 04294967295 表示可以省略 各类型整型变量 占用的内存字节 数,随系统而异 。 17 第3章 数据类型、 运算符 与表达式 表示方法 十进制: 123, -456, 0 八进制: 0123, -0456, 十六进制: 0x123, -0x456 以数字0开头 以0x开头 整数类型常量 分类 基本整型(数据范围与int型一样) 长整型 (在数值后面加“L(l)”, 数据范围与long int型一样) 如123l,315L 类型匹配 规则 一个整型常量,可以赋给能容纳下其值的整型变量 18 第3章 数据类型、 运算符 与表达式 注意: 常量无unsigned型。但一个非负整型常量 ,只要它的值不超过相应变量的值域(即取 值范围),也可以赋给unsigned型变量。 #include void main() long int c,d=9L; unsigned int e=-3 , f; f =5; c=-6; printf(“%ldn%ldn%un%u“,c,d,e,f); 举例 -6 9 65533 5 tc运行结果 19 第3章 数据类型、 运算符 与表达式 整型数据在内存中是以补码表示的。(参见教材P41) 整数类型存储方式 编码正数表示方法负数表示方法 原码 最高位为符号位(0正数,1负数)。其他位为 此数绝对值的二进制表示。 反码同原码 最高位为符号位(1),其他位为 原码表示的各位取反。 补码同原码 最高位为符号位(1),其他位为 原码表示的各位取反再末位加1。 20 第3章 数据类型、 运算符 与表达式 例如: 求-10的补码表示(按16位存储)。 -10的原码1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 除符号位外 各位取反 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 末位加11 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 则得到-10的二进制补码的表示。 21 第3章 数据类型、 运算符 与表达式 整数类型溢出举例(P44-例 3.3) #include void main() int a,b; a=32767; b=a+1; printf(“%dn%d“,a,b); 32767 32768 运行结果 改为2147483647 2147483647 2147483648运行结果 22 第3章 数据类型、 运算符 与表达式 分类及取 值范围 类型 比特数 有效数字 数值范围 float 32 67 10-371038 double 64 1516 10-30710308 long double 128 1819 10-4931104932 (二)浮点类型()变量 23 第3章 数据类型、 运算符 与表达式 表示方法 十进制小数形式: 123. 34,-0.0045, 0.0 指数形式: E(e) 如0.23e2 ,-0.45e-3, 3.0+5 规范化指数形式 数字和小数点组成 浮点类型常量 关于分类 浮点型常量是double型的。一个浮点型常 量,可以赋给一个浮点变量(float型或 double型)。 24 第3章 数据类型、 运算符 与表达式 指数形式(数符+小数部分+指数部分) 小数部分占的位数越多,数的有效 数字越多,精度越高.指数部分占的 位数越多,表示的数值范围越大. 浮点类型存储方式 浮点型数据在内存中是按指数形式存储的。( P45) 规范化指数形式:小数 部分采用纯小数形式, 且最高位不为0。 .314159 1 举例:3.14159在内存中的存放形式为: 25 第3章 数据类型、 运算符 与表达式 表示方法用单引号括起来的一个字符. a A 9 = ? 不同的两个字符 转义字符 字符形式 含义 (P48) n 换行,从当前位置移到下一行开头 t 水平制表(跳到下一个tab位置) b 退格,将当前位置移到前一列 r 回车,将当前位置移到本行开头 单撇号字符 反斜杠字符 “ 双撇号字符 ddd 13位8进制数所代表的字符 xhh 12位16进制数所代表的字符 (三) 字符类型常量 语言还允许使用一种特殊形式的字符常量,就是以 反斜杠“ “开头的转义字符。 将后面的字符转换 为另外的意义.即是 一种控制符号. 26 第3章 数据类型、 运算符 与表达式 举例 #include void main() printf(“abcbdnxyz“); printf(“rlmntopqn“) ; abd lmn opq 实际中,不会 这样使用! #include void main() printf(“x4Fx4Bx21n“); /* 等价于printf(“OK!n“); */ printf(“x15 xABn“); ! 结果: 结果: 27 第3章 数据类型、 运算符 与表达式 字符类型变量 存储方式 以ASCII码存储,占一个字节(参见教材P48 ) 类型及范围char 大小写英文字母,数字,运算符,标点符号等 注意:字符型数据与整型数据在存储方式 上的相似性使得两者之间可以通用。但字 符型数据的表示范围是:0255。 举例 字符变量ch中存放字符a,其ASCII码为97 ,在内存中以二进制形式存放,其格式如下 : 0 1 1 0 0 0 0 1ch 28 第3章 数据类型、 运算符 与表达式 例 字符变量的字符形式输出和整数形式输出 。 #include void main() char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn“,ch1,ch2); printf(“ch1=%d,ch2=%dn“,ch1,ch2); 字符类型举例1 一个字符型数据,既可以字符形式输出,也可以整数形式输出 ch1=a,ch2=b ch1=97,ch2=98 程序运行结果: 29 第3章 数据类型、 运算符 与表达式 字符类型举例2 允许对字符数据进行算术运算,此时就是对它们的ASCII 码值进行算术运算 例字符数据的算术运算(参考教材P364的ASCII码表) 。 #include void main() char ch1,ch2; ch1=a; ch2=B; /*字母的大小写转换*/ printf(“ch1=%c,ch2=%cn“,ch1-32,ch2+32); /*用字符形式输出一个大于256的数值*/ printf(“ch1+200=%dn“, ch1+200); printf(“ch1+200=%cn“, ch1+200); printf(“ch1+256=%dn“, ch1+256); printf(“ch1+256=%cn“, ch1+256); ch1=A,ch2=b ch1+200=297 ch1+200=) ch1+256=353 ch1+256=a 程序运行结果: 30 第3章 数据类型、 运算符 与表达式 概念 字符串常量 用一对双引号“ “括起来的若干字符序列 字符串 长度 字符串中字符的个数。长度为0的字符串( 即一个字符都没有的字符串)称为空串, 表示为“ (一对紧连的双引号)。 存储方式C语言规定:在存储字符串常量时,由系统 在字符串的末尾自动加一个0作为字符串 的结束标志。 注意:没有专门的字符串变量。如果想将一个字符串放在变量中保存和 处理,必须使用字符型数组(第7章)或者字符指针(第10章) 31 第3章 数据类型、 运算符 与表达式 思考? 1、 字符串常量“How do you do.“和“Good morning.“ 的长度分别是多少? 2、 字符串C:msdosv6.22和I say: “ Goodbye! “在C语 言中的字符串常量形式如何表示? 3、 字符串“CHINA“在内存中的实际存储形式是怎样 的?占用多少个字节的内存空间? 14和13 “C:msdosv6.22“和“I say:“Goodbye!“ CHINA0 占用字节 而非字节 内存空间 32 第3章 数据类型、 运算符 与表达式 注意: 1、a是字符, “a“是字符串。 2、 不能把一个字符串赋给一个字符变 量。如c=“a“、c=“Hello! “都是错误的 。 3、C语言中没有字符串变量,可以用字 符数组来表示。 ? 请看教材52页 33 第3章 数据类型、 运算符 与表达式 总结:字符与字符串的区别有哪些 ? 定界符不同:字符常量使用单引号,而字符 串常量使用双引号; 长度不同:字符常量的长度固定为1,而字 符串常量的长度,可以是某个整数; 存储要求不同:字符常量存储的是字符的 ASCII码值,而字符串常量,除了要存储有 效的字符外,还要存储一个结束标志0。 34 第3章 数据类型、 运算符 与表达式 (四) 不同类型数据间的转换 (一) 隐式转换(自动转换) (二) 显式转换(强制转换) 35 第3章 数据类型、 运算符 与表达式 (一)隐式转换(自动转换) 转换发生条件 v运算转换-不同类型数据混合运算时 v赋值转换-把一个值赋给与其类型不同的 变量时 v输出转换-输出时转换成指定的输出格式 v函数调用转换-实参与形参类型不一致时 转换 先转换、后运算 36 第3章 数据类型、 运算符 与表达式 转换规则 doublefloat long unsigned intchar,short 高 低 详见教材54页 1、纵向向上的箭头表示不同类型的 转换方向(由低类型转化为高类 型),不表示转换所经的步骤。 2、横向向左的箭头表示必须的转换。 隐式转换(自动转换) 说明: 必定的转换 运算对象类型 不同时转换 37 第3章 数据类型、 运算符 与表达式 int i; float f; double d; long e; i=2; f=2.5; d=3.9; e=3; 10+a+i*f-d/e 1075.01.3 112. 0 110. 7 int double double double double 思考:根据已知变量定义及赋值语句, 计算以下表达式的值,并说明每一步所得 结果的数据类型。 38 第3章 数据类型、 运算符 与表达式 (二)显式转换(强制转换) 一般形式 (要转换成的数据类型)(被转换的表达式) 注:当被转换的表达式是一个简单表达 式时,外面的一对圆括号可以缺省。 举例 float x,y; x=2.3 ; y=4.5; (int)(x+y) / 6 (int) (int)x+y / 6.5 (double) 说明 强制转换得到的是所需类型的中间变量, 原变量或表达式的类型不变。 39 第3章 数据类型、 运算符 与表达式 #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 程序运行结果 : 结论:较高类型 向较低类型转换 时可能发生精度 损失问题 40 第3章 数据类型、 运算符 与表达式 举例:已知三角形的边长a、b、c,求三 角形周长的一半。 #include void main() float a,b,c,s; a=3;b=4;c=5; s=1/2 * (a+b+c); printf(“s=%8.2f“,s); s= 0.00 程序运行结果 : ? s= 6.00 程序运行结果 : 改为:1.0/2 (1/2.0) 或 (float)1/2 (1/(float)2) 41 第3章 数据类型、 运算符 与表达式 (一)C运算符简介 (二)算术运算符和算术表达式 (三)赋值运算符和赋值表达式 (四)逗号运算符和逗号表达式 四、运算符与表达式 42 第3章 数据类型、 运算符 与表达式 1、算术运算符 + - * / % 2、关系运算符 = | A) j=+i; B)j=i+; C)j=-i+; i=i+1i=i-1 ? j,i A) j=4 i=4 B)j=3 i=4 C)j=-3 格式: 前置:+i , -i (在使用i之前,使i的值加(减)1) 后置:i+ , i- (在使用i之后,使i的值加(减)1) +和-结合方向 是“自右至左” 45 第3章 数据类型、 运算符 与表达式 例 i=3; A) c=(i+)+(i+); B) a=i+; b=i+; c=a+b; ? c, i A) c=6 i=5 B) c=7 i=5 两处i值都为3 例 i=3; j=4; i+j (i+)+j ? i, j i=4 j=4 表达式的值:7 自左而右组合 例 i=3; printf(“%d,%d”,i,i+) ? 4, 3 函数参数自右至左求值 46 第3章 数据类型、 运算符 与表达式 (1) 自增、自减运算是语言特有的,常用于循环语句中,使循环控 制变量加(或减),以及指针变量中,使指针指向下(或上)一个 地址。 (2) 自增、自减运算符,不能用于常量和表达式。 例如,5+、-(a+b)等都是非法的。 (3) +和-的结合方向为自右至左。(P57) (4) 如果对一个变量的自增自减运算,单独构成语句,而不是作为表 达式的一部分时,前置和后置运算效果一样,都是使变量自加。 如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论