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

下载本文档

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

文档简介

北京理工大学计算机学院 第 三 章 数据类型、运算符与表达式 李 书 涛 Date1 北京理工大学计算机学院 目录 1 基本数据类型 2 运算符和表达式 3 常用数学函数 4 变量初始化 5 5 本章小节 第三章第三章 数据类型、运算符与表达式数据类型、运算符与表达式 Date2 北京理工大学计算机学院 1 基本数据类型 1 1 基本数据类型 2.1.1 C语言的数据类型 数据类型数据类型 构造类型 指针类型 空类型(无值类型) void void 枚举类型 enumenum 数组类型 结构类型 structstruct 联合类型 unionunion 基本类型基本类型 整型整型 intint 字符型字符型 charchar 实型(浮点型)实型(浮点型) 单精度实型单精度实型 floatfloat 双精度实型双精度实型 doubledouble Date3 北京理工大学计算机学院 数据的描述 数据的操作 数据结构 算法 程序的任务是对数据进行处理,数据是程 序处理的对象,而运算符是施加给这些数据的 操作,数据和运算符是表达式的基本元素。 1. 程序与数据类型 1 1 基本数据类型基本数据类型 Date4 北京理工大学计算机学院 1. 不同类型数据采取不同的存储形式; 2. 不同类型数据在内存中占有不同的 存储空间; 3. 不同类型数据对应不同的取值范围; 4.不同类型数据确定了允许对其进行不 同的操作类型。 2. 数据类型的含义 1 1 基本数据类型基本数据类型 Date5 北京理工大学计算机学院 按照数据在程序中的取值分为两类: 值保持不变-常量 x=2 + y 值随程序运行变化-变量 3. C语言的基本数据类型 1 1 基本数据类型基本数据类型 基本类型基本类型 整型整型 intint 字符型字符型 charchar 实型实型 单精度 float 双精度 double 常量 变量 基本基本 类型类型 Date6 北京理工大学计算机学院 1. 在程序运行中,其值保持不变 2. 表示方法: 整型 100,125,-100 实型 3.14 , 0.125 字符型 a, b 字符串常量 “string” 3. 符号常量: #define PI 3.14159 宏定义:给常量定义一个标识符,称宏名,大写。 2.1.2 常量与变量 一、常量 Date7 北京理工大学计算机学院 3. 变量通过变量名来标识。 1. 在程序运行中,值发生变化; 2. 必须先定义,再使用; int a, b; 类型 变量名表 memory a82563 变量名和内存中的存储单元变量名和内存中的存储单元 相对应。编写程序时通过变量名相对应。编写程序时通过变量名 来存、取存储单元。来存、取存储单元。 二、变量 变量 Date8 北京理工大学计算机学院 (1)以字母或下划线开头 (2)不能用系统中的关键字作为变量名 int a,b,A123,_b; int a; A=5; (3)变量名中的字母是区分大小写的。 sum、stu_name、_age、Lts_1_2、a2 32c、x.y、start+9、c2.0 非法 NAME name 表示两个不同的标识符。 不提倡大小写混合使用 4. 有关变量名的规定 Date9 北京理工大学计算机学院 有三种表 示形式 十进制 八进制 十六进制 1234 加前导0 01234,0125 加前导0x如0x123,0xffff 整型数据包括整 型常量和整型变量, 整型数据以二进制补 码形式存储。 例例 100100、-8-8、0 0;010010、024024;0x380x38、0X1F0X1F 2.1.3 整型数据 一、整型常量 Date10 北京理工大学计算机学院 掌握要点 1. 有几种定义形式; 2. 每种形式占存储空间的大小不同; 3. 取值范围不同; 4. 输入输出格式不同。 二、整型变量 Date11 北京理工大学计算机学院 六种 形式 基本整型 短整型 长整型 无符号整型 无符号短整型 无符号长整型 int short int long int unsigned int 占存储空间 一个变量 2 2 4 2 unsigned short unsigned long 2 4 1. 定义形式 Date12 北京理工大学计算机学院 类类 型型 说明符说明符 长度长度 数的范围数的范围 基本型基本型 intint 2 2字节字节 -32768-327683276732767 短整型短整型 short short 2 2字节字节 -2-215 15 2 2 1515-1 -1 长整型长整型 longlong 4 4字节字节 -2-231 31 2 2 3131-1 -1 无符号整型无符号整型 unsignedunsigned 2 2字节字节 0 06553565535 无符号短整型无符号短整型 unsigned shortunsigned short 2 2字节字节 0 06553565535 无符号长整型无符号长整型 unsigned longunsigned long 4 4字节字节 0 02 232 32-1 -1 2. 整型变量的取值范围 Date13 类类 型型 说明符说明符 长度长度 数的范围数的范围 基本型基本型 intint 2 2字节字节 -32768-327683276732767 无符号整型无符号整型 unsigned unsigned 2 2字节字节 0 06553565535 有符号与无符号整型数的区别有符号与无符号整型数的区别 intint 最最高位为符号位高位为符号位1 1为为 负数补码负数补码 unsigned unsigned 最高位为数值位最高位为数值位=2=215=32768=32768 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 a= 则:则:unsigned unsigned a= 2 216-1=65535-1=65535,而而i intnt a=-1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a= 则:则:unsigned unsigned a= 2 215=32768=32768,而而i intnt a=-3276832768 Date14 北京理工大学计算机学院 int型数存储长度为16位二进制(2Byte) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 =2=215 15-1=32767 -1=32767 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 10 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 =1=1=3=3 上面的数再加1是 多少? =-2=-215 15=-32768 =-32768 例例 补码表示 intint型表示数的范围型表示数的范围:- 32768 32767- 32768 32767 3. 输入输出形式 : %d,%ld,%x,%o,%u int型数的表示范围 Date15 北京理工大学计算机学院 1. 求法:正数的补码与原码相同;负数的补码对原码除除 符号位外,按位变反,末位加符号位外,按位变反,末位加1 1,即得补码。或者由反码 加1也可求得补码。 +0+0 补 补 = = - 0- 0 补 补 =0 =0 0补的两 种表示是 什么? 数的补码表示 2. 补码的表示范围 当n=8时,补码的表示范围是: +最大数补=0 1111111 -最大数补=1 0000000 -128-128+127+127 由此可得补码表示范围的公式是 2n1(2n11) Date16 北京理工大学计算机学院 数的补码举例已知:a=4,b=16,设n=8 计算 4 -16 根据 a补+b补= a+b补有: a+b补 =+4补+16补 1 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 + 1 1 1 1 0 0 0 0 结果为负时得到负数的补码,结果为负时得到负数的补码, 需再求补得原码:需再求补得原码:10001100 16 原= 10010000 连同符号 一起运算 解答解答 4 补 = 00000100 16 反= 11101111 16 补= 11110000 Date17 北京理工大学计算机学院 包括实型常量和实型变量 两种表 示形式 小数 指数 0.123 123e-3 实型常量只能用十进 制形式表示,不能用 八进制和十六进制 1e31e3、1.8e-31.8e-3、-123e-6-123e-6、-.1e-3-.1e-3 e5e5、1e-3.21e-3.2、e e、.e-03.e-03 2.1.4 实型数据 一、实型常量 非法 指数格式 : 数符尾数e阶符阶码 Date18 北京理工大学计算机学院 1. 定义形式 三种 形式 单精度 双精度 长双精度 float double long double 2. 占存储空间 一个变量 4 8 16 实型常量不区分 单精度和双精度 二、实型变量 Date19 北京理工大学计算机学院 4. 输入输出形式 %f, %lf 3. 变量的取值范围 类型 长 度 数的范围有效数字 单精度float410- 38 10386 7位 双精度double810- 308 1030815 16位 长双精度long double 1610- 4931 104932 18 19位 Date20 实型数据在计算机中以指数形式存储,单精 度float变量占四个字节。一个字节存放指数部分, 三个字节存数值部分。 2 2 -23-23 b) ? a: b 目 不同类型的变量, 允许的操作不同 单目运算符 双目运算符 三目运算符 三.学习运算符应掌握的要点 单目运算符 双目运算符 三目运算符 Date36 北京理工大学计算机学院 *优先级: 运算符的执行顺序 *结合性:优先级相同时的结合方向 *运算结果的类型X=5+8 a100 X=a+b*c a+b-c 572 a=b=5 单目运算符的优先级高于双目运算符 单目运算符从右向左结合 双目运算符从左向右结合 运算符的优先级与结合性 Date37 北京理工大学计算机学院 1. 共有5个:+,-,*,/,% 2. “-”作为 负号时为单目 单目: - 双目:*, /, % 双目:+,- 5. 优先级: 6. 结合性: 从左向右 3. %运算只适用于整型数 算术运算的结 果为什么类型 取模(求余数) a=10%4 a的值为2 2.2.2 算术运算符和算术表达式 4. /运算用于整型和实型时不同 Date38 北京理工大学计算机学院 1. 模(求余数) % 运算 令:a=10; b=4; 求a % b与b % a; 结果: a / b= 2 令:a=10; b=4; x=10.0; y=4.0; 求a / b与x / y; 结果: x / y=2.5 结果: a % b=2, b % a=4 算术运算符举例 2. / 运算用于整型时称整除;用于实型时称实除。 Date39 北京理工大学计算机学院 2.2.3 关系运算符与关系表达式 关系运算和逻辑运算经常作为条件语句和 循环语句中的条件,其结果为一逻辑值。 A和 B中至少有一个大于 C 如何用C语言描述 A和 B全部大于 C A为不大于100 的 偶 数 关系运算是一种比较运算,将两个值(表达 式)进行比较,判断比较的结果是否符合给定的 条件: 符合结果为1;否则结果为0。 关系运算关系运算 逻辑运算逻辑运算 Date40 北京理工大学计算机学院 大于 , 大于等于 =,小于 bc 一、关系运算符 Date41 2. 关系表达式的结果是一个逻辑值,根据关系是否满足, 分别 取值 1. 1. 关系运算符与运算分量构成关系表达式关系运算符与运算分量构成关系表达式 int i=1,j=7,a; a=i+(j%4!=0) a的值?结果:a=2 3. 使用关系表达式 注意事项 (1) 数学上,判断x是否在区间 a,b 时,习惯上写成 a0的值为逻辑 1 二、关系表达式 满足,取1 否则,取0 例如: Date42 1.0/3.0 * 3.0 = 1.0的逻辑值为0 ( 3 ) 当判断两个浮点数是否相等时,由于存储上 的误差,可能会有错误的结果,例如:数学上恒 等式: 1.0 / 3.0 * 3.0 = 1.0 但在C语言中: ( 4 ) 在数学中,5278 无效,但C中是允许的 ( 5 )关系表达式的结果可以当成整型数,例如: int a=3,b=5,c=7,d; 求:d = a c 逻辑1 17逻辑0 d的值 为0 使用关系表达式注意事项 Date43 北京理工大学计算机学院 1. 有三个 a,b均为非0, 再判断 c;若a为0时,不必判断 b和 c,结果一定为 0不必判断 b 和 c,结果一定为 1 (2 ) a b c,若a为非0,不必判断 b和 c,结果一定为 1 已知 :a=1,b=2,c=3,d=4,m=1,n=1 执行 (m=ab) Date66 3. 条件运算符的优先级:高于赋值,低于其他 4. 结合性:从右向左z=(ab)?a:(ad)?c:d; 5. 数据类型可以不同: xy?a:b 执行:int x=10,y=9; int a,b,c; a=(- -x=y+)?-x:+y; b=x+; c=y; 后a,b,c? a, b, c A) 9, 9, 9 B) 8, 8, 10 C) 8,10, 9 D) 1,11,10 X为9 y为10 X为8 条件运算的特点 Date67 北京理工大学计算机学院 若w,x,y,z,m均为int型变量,则执行下面语句后 的m值为: w=1;x=2;y=3;z=4; m=(w10?x+100:x-10); printf(“%d,”,w+|z+) ; printf(“%d,”,!wz); printf(“%d,”,w A) 0 ,1,1,1 B) 1,1,1,1 C) 0, 1,0,1 D) 0,1,0,0 算术运算 关系运算 逻辑运算 条件运算 综合举例 Date69 北京理工大学计算机学院 一、逗号运算符(表达式 1,表达式 2 , ,表达式 n) 用于连接几个表达式 二、求解过程 顺序求解几个表达式 三、优先级逗号运算符的优先级最低 四、结合性从左向右 五、逗号表达式逗号表达式的值为最后一个表达 式的值(表达式n 的值) X = ( ( a=4*5 , a*2 ) , a+6 ) a为? x为? 2.2.9 逗号运算符 Date70 结构体类型中引用结构体成员分量 结构体变量名 . 结构成员名 结构体指针名 - 结构成员名 struct char name20; int age; char sex; stud1,stud2; stud1.age=22; 二. “( )”和“ ”运算符 ( )运算符:改变表达式的执行次序,类型转换运算, 函数的参数表等。 运算符:下标运算符,数组定义和数组元素的引用。 在C语言所有的运算符中,“.”,“-”,( ), 的优先级最高 2.2.10 其它运算 一. “.”和“-”运算符 Date71 北京理工大学计算机学院 “*”是指针运算符,间接访问指针所指对象的内容 “ float b=3.5; char str; int *pa; float *pb; pa= pb= printf(“%d,%d,%f,%fn”,a,*pa , b, *pb); 四. type 运算符 type为某种类型标识符(类型标识符)表达式 将表达式的结果强制转换为括号中指定的类型 三. “*”和“ 五. sizeof 运算符 结果:2,1 求:printf(“%d“, sizeof(“ASTn01212“); 结果:10 Date73 北京理工大学计算机学院 功能, 优先级, 结合性, 单目,双目,三目,结果 运算符小结 算术运算符: +,-,*,/,% 赋值运算符: = 关系运算符: ,=, , ,sizeof( ),(type), Date74 不同数据类型需先转换成同一类型,然后进行运算 自动进行-隐式转换 强制进行-显式转换 一、隐式转换(算术转换) 优先级低的向优先级高的转换 int i; float f; double d; long e; 表达式:10+a+i*f-d/e 的结果为: double 2.2.11 混合运算及数据类型转换 必定转换 double float long unsigned int char, short Date75 北京理工大学计算机学院 格式: (类型)表达式 (int) (10+a+i*f-d/e) 将该结果强制转换为整型 例:int i;float f; 求:(int)f%i 取模运算要求运算分量是整数,所以 先将 f 转换为整型,再做%运算 三、赋值转换 赋值符号右边的类型向左边的转换 int x; float y = 5.3; x=y; int x=5; float y; y=x; 二、显式转换(强制转换) 结果: x=5结果: y=5.000000Date 76 北京理工大学计算机学院 1. 优先级:分为1 15级 不同级别混合运算时,按优先级先高后低。 2. 结合性 相同级别进行运算时,按结合性处理。 单目、条件、赋值运算符的结合性是自右向左。 其它运算符的结合性是自左向右。 四、优先级与结合性 Date77 北京理工大学计算机学院 1. (8 3) 结果 1111 0111 3 11111110取 00000001 2. a=8; b=5; c=2; 3. 求 b a ? a*c : a%c 结果 4. 5 -9 16 0 3. a=8; b=5; c=2; 求 a / b * b 结果 优先级相同 ,按结合性 自左向右。 综合举例 1 16 5 课堂作业 Date78 北京理工大学计算机学院 一 、C中的基本数据类型,要掌握每一种类型的 定义方式(关键字),在存储空间中所占的字节 数,存储形式,取值范围。 二 、 C中的运算符的几个要点(功能、 与运算分量的关系、优先级 、结合性、 运算结果的类型)。 三 、算术运算符中的%只使用在int类型。 四、 自增,自减运算的特点,灵活使用k+,+k。 数据类型与运算符总结 数据类型与运算符数据类型与运算符总结总结 Date79 北京理工大学计算机学院 数据类型与运算符总结 数据类型与运算符数据类型与运算符总结总结 五 、复合的赋值运算规则。 六 、 逗号运算表达式的值是最后一个表达式的值。 七、 不同类型数据转换时的优先顺序。 八 、算术运算、关系运算、赋值运算、 逗号运算的优先级。 九、 常用转义字符的特点 ddd 、xhhh等只占一个字节。 Date80 北京理工大学计算机学院 数据类型与运算符总结 数据类型与运算符数据类型与运算符总结总结 十、 常用的常量表示方法 十进制 100 ; 整数 八进制 0123 ; 十六进制 0xf3d ; 实数的小数,指数形式 ; 字符常量 a; 字符串常量“ a ”。 十一、单目运算,双目运算的优先级和结合性特点 Date81 运算符的优先级和结合方向 1 Date82 运算符的优先级和结合方向 2 Date83 值得注意的几个问题 1. 取模(求余数)求: 10 % 3 = 10 %-3 = -10 % 3 = -10 %-3 = 计算结果如右 : 1 1 -1 -1 结论:结果符号与被除数一致 2. 自反赋值 变量 双目操作= 表达式 功能 变量 =变量 双目操作 表达式 int a=10,b=5; 求:a*=b+1; printf(“a=%dn”,a); a=60 计算结果如下: 结论:表达式作为整体参加运算 课堂作业 Date84 北京理工大学计算机学院 自反赋值 int x=5; 求:x+=x-=x*x; 结果:x = - 40 int x=3; 求:x+=x-=x*x; 结果:x = - 12 课堂作业 Date85 运算符的优先级 括 号 ( ) . - 单目运算 ! cos( ) 计算cos(x)值,用法:double cos(double x); Date87 北京理工大学计算机学院 4 变量初始化 4 4 变量初始化 1. 在C语言程序设计中,可以在定义变量的同时给变量 赋初值,称为变量初始化,如: int i=6; float f=3.12; char c=a; 2. 定义时也可以使被定义的变量的一部分赋初值,如: int a,b,c=8; Date88 北京理工大学计算机学院 5 本章小结 5 5 本章小结 本章是C语言程序设计的基础,内容涉及到编程 使用的基本概念和基础知识,使读者对C语言的数据 类型、运算符、表达式、不同数据类型之间的转换等 有了初步的了解,为进一步学习C语言打下了良好的 基础。本章的知识点在于掌握C语言数据类型的定义 和赋值方法,学会使用有关运算符及表达式。只有很 好的掌握了C的数据类型、表达式运算,才能恰当的 运用于C语言的程序设计之中。 Date89 北京理工大学计算机学院 综合练习 综合练习 一. 单项选择

温馨提示

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

评论

0/150

提交评论