jin3第三章数据类型、运算符与表达式.ppt
《jin3第三章数据类型、运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《jin3第三章数据类型、运算符与表达式.ppt(94页珍藏版)》请在三一办公上搜索。
1、2023/7/6,1,第 三 章 数据类型、运算符与表达式,李 书 涛,2023/7/6,2,目录,1 基本数据类型 2 运算符和表达式 3 常用数学函数 4 变量初始化 5 本章小节,第三章 数据类型、运算符与表达式,2023/7/6,3,1 基本数据类型,1 基本数据类型2.1.1 C语言的数据类型,2023/7/6,4,数据的描述数据的操作,程序,类型,运算符,数据结构算法,程序的任务是对数据进行处理,数据是程序处理的对象,而运算符是施加给这些数据的操作,数据和运算符是表达式的基本元素。,1.程序与数据类型,1 基本数据类型,2023/7/6,5,1.不同类型数据采取不同的存储形式;2.
2、不同类型数据在内存中占有不同的存储空间;3.不同类型数据对应不同的取值范围;4.不同类型数据确定了允许对其进行不同的操作类型。,2.数据类型的含义,1 基本数据类型,2023/7/6,6,按照数据在程序中的取值分为两类:值保持不变-常量 x=2+y值随程序运行变化-变量,3.C语言的基本数据类型,1 基本数据类型,2023/7/6,7,1.在程序运行中,其值保持不变2.表示方法:,整型 100,125,-100实型 3.14,0.125字符型 a,b字符串常量“string”,3.符号常量:#define PI 3.14159,宏定义:给常量定义一个标识符,称宏名,大写。,常量与变量一、常量,
3、2023/7/6,8,3.变量通过变量名来标识。,1.在程序运行中,值发生变化;,2.必须先定义,再使用;,int a,b;,类型 变量名表,256,3,变量名和内存中的存储单元相对应。编写程序时通过变量名来存、取存储单元。,二、变量,变量,2023/7/6,9,(1)以字母或下划线开头,(2)不能用系统中的关键字作为变量名,int a,b,A123,_b;,int a;.A=5;,(3)变量名中的字母是区分大小写的。sum、stu_name、_age、Lts_1_2、a232c、x.y、start+9、c2.0 非法NAME name 表示两个不同的标识符。,4.有关变量名的规定,2023/
4、7/6,10,有三种表示形式,十进制 八进制十六进制,1234,加前导0 01234,0125,加前导0 x如0 x123,0 xffff,整型数据包括整型常量和整型变量,整型数据以二进制补码形式存储。,例,100、-8、0;010、024;0 x38、0X1F,整型数据一、整型常量,2023/7/6,11,掌握要点 1.有几种定义形式;2.每种形式占存储空间的大小不同;3.取值范围不同;4.输入输出格式不同。,二、整型变量,2023/7/6,12,六种形式,基本整型短整型长整型无符号整型无符号短整型无符号长整型,int short intlong int unsigned int,占存储空间
5、,一个变量,2242,字节,unsigned short unsigned long,24,1.定义形式,2023/7/6,13,类 型 说明符 长度 数的范围基本型 int 2字节-3276832767短整型 short 2字节-215215-1 长整型 long 4字节-231231-1无符号整型 unsigned 2字节 065535无符号短整型 unsigned short 2字节 065535无符号长整型 unsigned long 4字节 0232-1,2.整型变量的取值范围,类 型 说明符 长度 数的范围基本型 int 2字节-3276832767无符号整型 unsigned 2
6、字节 065535,有符号与无符号整型数的区别,int 最高位为符号位1为 负数补码unsigned 最高位为数值位=215=32768,则:unsigned a=216-1=65535,而int a=-1,则:unsigned a=215=32768,而int a=-32768,2023/7/6,15,int型数存储长度为16位二进制(2Byte),0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,=215-1=32767,0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1,0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,1 0 0 0 0 0 0
7、0 0 0 0 0 0 0 0 0,=1,=3,上面的数再加1是多少?,=-215=-32768,例,补码表示,int型表示数的范围:-32768 32767,3.输入输出形式:%d,%ld,%x,%o,%u,?,int型数的表示范围,2023/7/6,16,1.求法:正数的补码与原码相同;负数的补码对原码除符号位外,按位变反,末位加1,即得补码。或者由反码加1也可求得补码。,+0补=-0补=0,数的补码表示,2.补码的表示范围 当n=8时,补码的表示范围是:,+最大数补=0 1111111-最大数补=1 0000000,-128+127,由此可得补码表示范围的公式是,2n1(2n11),20
8、23/7/6,17,数的补码举例,已知:a=4,b=16,设n=8 计算 4-16,根据 a补+b补=a+b补有:a+b补=+4补+16补,1 1 1 1 0 1 0 0,结果为负时得到负数的补码,需再求补得原码:10001100,16 原=10010000,连同符号一起运算,解答,4 补=00000100,16 反=11101111,16 补=11110000,-12,2023/7/6,18,包括实型常量和实型变量,两种表示形式,小数指数,0.123123e-3,实型常量只能用十进制形式表示,不能用八进制和十六进制,1e3、1.8e-3、-123e-6、-.1e-3e5、1e-3.2、e、.
9、e-03,实型数据一、实型常量,指数格式:,数符尾数e阶符阶码,2023/7/6,19,1.定义形式,三种形式,单精度双精度长双精度,floatdoublelong double,2.占存储空间,一个变量,4816,字节,实型常量不区分单精度和双精度,二、实型变量,2023/7/6,20,4.输入输出形式%f,%lf,3.变量的取值范围,实型数据在计算机中以指数形式存储,单精度float变量占四个字节。一个字节存放指数部分,三个字节存数值部分。,2-23=|尾数|=1-2-23,float型数的表示范围,最小尾数=2-23,二进制 7位,二进制 23位,单精度实型,数符 尾数,阶码,阶符,最大
10、尾数=1-2-23,2023/7/6,22,字符型数据一、字符型常量,字符型常量 字符型变量,1.用单引号包含的一个字符是字符型常量,2.只能包含一个字符,例,a,A,1abc“a”,2023/7/6,23,有些以“”开头的特殊字符称为转义字符,n 换行t 横向跳格r 回车 反斜杠ddd ddd表示1到3个八进制数字xhhh hhh表示1到3个十六进制数字,请牢记!,printf(“%d t%d t”,a,b);printf(“%d n%d n”,a,b);,若:a为1,b为0,则,3.转义字符,输出:1 0 1 0,转义字符表示法,2023/7/6,25,ddd 表示1到3个八进制数字对应A
11、SCII字符xhhh 表示1到3个十六进制数字对应ASCII字符10114160 x41x61x30,printf(“%c,%c,%cn”,a,b,c);printf(“%c,%c,%cn”,x,y,z);,若:a=101,b=141,c=60;若:x=x41,y=x61,z=x30;,转义字符举例 课堂作业,输出:A,a,0输出:A,a,0,表示A表示a表示0,表示A表示a表示0,2023/7/6,26,1.定义形式:,2.占存储空间,一个字节,1 字节,char 变量表,一个字符变量只能包含一个字符,3.输入输出形式%c,a ASCII值为 97 内存中存储形式,0 1 1 0 0 0 0
12、 1,4.字符型数据在内存中以相应的ASCII值存储,二、字符型变量,2023/7/6,27,在ASCII范围以内,整型数据与字符型数据可以通用,!,main()char c;c=c;printf(“%c”,c);,c,?,例,题目中有几个c,哪些是等价的?,运行结果:,字符型数据的特点,2023/7/6,28,1.双引号内的一串字符“china”,2.n个字符组成的字符串常量,在内存中占空间为 n+1 个字节。,c,h,i,n,a,0,字符串结束标记,3.C 中没有专用的字符串变量。,“This is C string”串长 16“a”串长 1“”(空格)串长 1“”(不含空格)串长 0,三
13、、字符串常量,2023/7/6,29,&,变量是存放在内存上的,内存的每一个字节成为一个单元,每个单元有一个编号,这个编号就是地址。,定义变量:int k;编译系统根据类型为k分配内存,输入变量的值:scanf(“%d”,&k 就代表了变量 k 在内存中的地址。,通过变量名对变量的访问,这种操作称为直接访问:int k;scanf(“%d”,关于地址的概念,指针型数据,2023/7/6,30,C 提供了另一种方式,将变量 k的地址存放在另一个变量处(假定为pk),通过访问 pk,就可以间接地访问变量k,这种方式称为间接访问。,变量 int k;变量 pk 中存放 k 在内存中的地址,变量pk
14、就是一个指针变量,指向变量k,存放k的地址。因此:指针就是地址。,间接访问,*,间接访问的概念,2023/7/6,31,int a=10,c=5;float b=3.5;char str;int*pa;float*pb;,pa=,间接访问举例,2023/7/6,32,让变量使用之前有值,初始化,方法,int a=5;int a,b,c=5;int a=b=c=5;,初始化不是在编译时进行,而是在程序运行时完成的。,变量的初始化,定义变量的同时为其赋值称初始化,2023/7/6,33,C语言的基本数据类型小结,类 型 说明符 长度 数的范围 字符型 char(ASCII码)1字节 0127 整
15、型 int(-215215-1)2字节-3276832767 长整型 long 4字节-231231-1 单精度 float 4字节 10-381038 双精度 double 8字节 10-30810308 长双精度 long double 16字节 10-4931104932,2023/7/6,34,一、运算符,运算符,运算分量,x=5+b*c,对数据进行运算的符号,被加工的数据,+,表达式,算术运算符赋值运算符关系运算符逻辑运算符逗号运算符条件运算符,C 中运算符,共34种,2 运算符和表达式,2 运算符和表达式 运算符和表达式概述,2023/7/6,35,2.表达式的运算结果称为 表达式
16、的值,1.运算符和运算分量构成 表达式,算术表达式关系表达式逻辑表达式赋值表达式逗号表达式条件表达式,二.表达式,2023/7/6,36,*运算符的种类与功能,*运算符与运算分量的关系,个数,类型,A+B,(ab)?a:b,目,关系,不同类型的变量,允许的操作不同,单目运算符双目运算符三目运算符,三.学习运算符应掌握的要点,单目运算符双目运算符三目运算符,2023/7/6,37,*优先级:运算符的执行顺序,*结合性:优先级相同时的结合方向,*运算结果的类型,X=5+8a100,X=a+b*c,a+b-c572a=b=5,结果?,单目运算符的优先级高于双目运算符单目运算符从右向左结合双目运算符从
17、左向右结合,运算符的优先级与结合性,2023/7/6,38,1.共有5个:+,-,*,/,%,2.“-”作为 负号时为单目,单目:-,双目:*,/,%,双目:+,-,5.优先级:,6.结合性:从左向右,3.%运算只适用于整型数,算术运算的结果为什么类型,取模(求余数)a=10%4a的值为2,?,算术运算符和算术表达式,4./运算用于整型和实型时不同,2023/7/6,39,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.
18、/运算用于整型时称整除;用于实型时称实除。,2023/7/6,40,关系运算符与关系表达式,关系运算和逻辑运算经常作为条件语句和循环语句中的条件,其结果为一逻辑值。,A和 B中至少有一个大于 C,如何用C语言描述,A和 B全部大于 C,A为不大于100 的 偶 数,关系运算是一种比较运算,将两个值(表达式)进行比较,判断比较的结果是否符合给定的条件:符合结果为1;否则结果为0。,关系运算 逻辑运算,2023/7/6,41,大于,大于等于=,小于,不等!=小于等于=,恒等=,,1.六个关系运算符,=,!=的优先级低于其余四个,2.优先级,关系运算的优先级高于赋值,低于算术运算,区别赋值,3.结合
19、性 从左向右,abc,一、关系运算符,关系表达式的结果是一个逻辑值,根据关系是否满足,分别 取值,1.关系运算符与运算分量构成关系表达式,int i=1,j=7,a;a=i+(j%4!=0)a的值?,结果:a=2,3.使用关系表达式 注意事项,!,(1)数学上,判断x是否在区间 a,b 时,习惯上写成a=x=b,但在C 中,必须写成 a=x&x=b,&,(2)字符是按ASCII 存储的,因此a0的值为逻辑 1,二、关系表达式,满足,取1否则,取0,例如:,1.0/3.0*3.0=1.0的逻辑值为0,(3)当判断两个浮点数是否相等时,由于存储上的误差,可能会有错误的结果,例如:数学上恒等式:1.
20、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,使用关系表达式注意事项,2023/7/6,44,1.有三个,&(与):两边为1,结果为1(或):两边有一个为1,结果为1!(非):非1为0,非0为1!1=0,!0=1,2.优先级:!的优先级高于&和(),逻辑运算与其他运算相比:非!的优先级最高,与&和或 的优先级低于其他。,3.结合性:与和或是从左向右,非是从右向左,2.2.4 逻辑运算符与逻辑表达式一、逻辑运算符,202
21、3/7/6,45,逻辑运算符的真值表,逻辑值用1和0表示,2023/7/6,46,2、逻辑运算,“0”“假”“1”“真”,逻辑变量有两种状态:,研究事物的逻辑关系时,用逻辑变量代表各个事件。,逻辑运算符连接逻辑变量,构成逻辑表达式,结果为逻辑值。,开为 1关为 0,1、逻辑变量,2023/7/6,47,两个条件中只要有一个成立,结果就成立,锁打开:1锁关闭:0有钥匙:1无钥匙:0,逻辑或真值表:,A B C0 0 00 1 11 0 11 1 1,逻辑或|(加,+,V),2023/7/6,48,开关合:1开关开:0灯 亮:1灯 灭:0,两个条件都个成立结果才成立,两个开关A、B控制一盏灯C,A
22、,B,C,逻辑与真值表:,A B C0 0 00 1 01 0 01 1 1,逻辑与&(乘,),2023/7/6,49,2.表达式的值为逻辑的1和0,表示真与假,任何非零实数均可作为逻辑上的1,例:a=5,b=7,c=4,d=3x=(a+b)(c+d)&(da),先做算术运算,再做关系判断,将最后结果赋给x,1.用逻辑运算符将关系运算表达式或逻辑量连接起来构成逻辑表达式,5 2 7 8,从左向右运算(52)逻辑值为1(17)逻辑值为0(08)逻辑值为0,整个表达式的值为 0,二、逻辑表达式,结果:x=(12)(7)&(0)=1&0=0,3.在逻辑表达式中,并不是所有的逻辑运算都必须执行,如果&
23、的一边已经为0,结果一定为 0,如果 的一边已经为 1,结果一定为 1。,(1)a 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)&(n=cd)之后:m=?n=?,由于 ab的值为 0,m=0不再判断(n=cd)的值,因此,n 维持原有的值,m=0n=1,逻辑运算的特点,求逻辑表达式的值 1)17 3)!(2 3)!(25)5)!(4=6)&(3=7),如何表示闰年,逻辑运算举例一,逻辑表达式 结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jin3 第三 数据类型 运算 表达式

链接地址:https://www.31ppt.com/p-5436291.html