jin3第三章数据类型、运算符与表达式.ppt

上传人:牧羊曲112 文档编号:5436291 上传时间:2023-07-06 格式:PPT 页数:94 大小:3.93MB
返回 下载 相关 举报
jin3第三章数据类型、运算符与表达式.ppt_第1页
第1页 / 共94页
jin3第三章数据类型、运算符与表达式.ppt_第2页
第2页 / 共94页
jin3第三章数据类型、运算符与表达式.ppt_第3页
第3页 / 共94页
jin3第三章数据类型、运算符与表达式.ppt_第4页
第4页 / 共94页
jin3第三章数据类型、运算符与表达式.ppt_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《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),如何表示闰年,逻辑运算举例一,逻辑表达式 结果

24、1)17 1&0=0 3)!(2 3)!(25)!0=1 5)!(4=6)&(3=7)!1=0,课堂作业,2023/7/6,52,要判别用year表示的某一年是否闰年,闰年的条件是符合下面二者之一:1)能被4整除,但不能被100整除,如2008;2)能被400整除,如2000。上面两个者条件可以用一个表达式来表示:,闰年的表示,(year%4=0&year%100!=0)|year%400=0,2023/7/6,53,用C语言描述:1)a小于b或小于c2)a和b都大于c3)a和b中有一个大于c4)a是非正奇数5)a是偶数6)a不能被b整除7)a是正奇数,且b是负偶数,逻辑运算举例二,用C语言描

25、述:1)ac&bc3)ac|b c4)!(a0&a%2!=0)5)a%2=06)a%b!=07)(a0&a%2!=0)&(b0&b%2=0),课堂作业,2023/7/6,54,k=k+1,k+先使用变量k的值,再加 1,+k 先加1,再使用变量 k的值,k=k-1,k-先使用变量k的值,再减 1,-k 先减1,再使用变量k 的值,k=3;printf(“%d”,k+);输出 3 后,k 的值为 4,i=3;printf(“%d”,+i);,输出4,自增、自减运算符1.变量自身加(减)1:+与-,2023/7/6,55,2.只能用于变量,不能用于表达式和常量,(i+k)+,-3,3.优先级:高于

26、双目算术运算符,4.结合性:从右向左,main()int a,b,s;a=5;b=5;s=a+b;printf(“%d,%d,%dn”,a,b,s);s=a+b;printf(“%d,%d,%dn”,a,b,s);s=+a+b;printf(“%d,%d,%dn”,a,b,s);s=-a+b;printf(“%d,%d,%dn”,a,b,s);s=a-+b;printf(“%d,%d,%dn”,a,b,s);s=a+b;printf(“%d,%d,%dn”,a,b,s);,应用举例,课堂作业,2023/7/6,57,s=a+b;s=a+b;s=+a+b;s=-a+b;s=a-+b;s=a+b;

27、,a=5,b=5,5+5=105+5=107+5=126+5=116+5=115+5=10,a b s5 5 106 5 107 5 126 5 115 5 115 5 10,题目分析,s,例题分析一,2023/7/6,58,例1:y=5;x=y+*+y;,结果:X=6*6=36;y=7,题目分析,例题分析二,例2:i=5;a=i+*i+;b=+i*+i;,结果:a=5*5=25;i=7b=9*9=81;i=9,i=3;k=i+i+i+;,i=3;k=+i+(+i)+(+i);,i=?k=?,i=6,k=9,i=6,k=18,2.2.6 位运算 共有六种运算符一、位运算符 优先级 结合性,运算

28、规律,真值表,按位右移(双目)11()按位左移(双目)11()&按位与(双目)8()按位异或(双目)7()按位或(双目)6()按位反(单目)14(),实例:已知:int x=7,y=10,z=1;设字长为8位,求:,2(0000 0111&0000 1010=0010)1(0000 0111&0000 0001=0001)15(0000 0111 0000 1010=1111)11(0000 1010 0000 0001=1011)13(0000 0111 0000 1010=1101)8(0000 0111)=1111 1000 7 28(0000 0111 2=0000 0010)1(00

29、00 0111 2=0000 0001),x&y=x&z=x y=y z=x y=x=x=x2=x2=,说明,关于:右移一位=缩小 1/2 关于:左移一位=扩大 2 倍 关于:因为:x=按位求反=求反运算 求负=求补=求反+1 所以:求反=求负 1 x=-x 1 例:7=-7-1=-8;而:(-8)=-(-8)-1=7注意:1.位运算是对二进制的位进行运算 2.只能对int型、char型和long型进行位运算,2023/7/6,62,1.将一个常量或一个表达式的值赋给一个变量称为赋值,x=5 y=x+10,2.可以将一个实型赋给一个整型,或将一个整型赋给一个实型,int x;x=5.3;x的值

30、为 5float y;y=5;y的值为 5.000000,3.赋值运算的优先级,比算术运算低,4.赋值运算的结合性,从右向左,x=y=5,2.2.7 赋值运算与条件运算一.赋值运算符与赋值表达式,x+=n x=x+n,赋值运算符两侧出现相同的变量,x=x+nx=x-nx=x*nx=x/n x=x%n,x+=nx-=nx*=nx/=n x%=n,算术运算与赋值运算相结合,X与n均为整数,n 为常数,二.组合赋值运算符和组合赋值表达式,格式:变量 双目操作符=表达式;,双目操作符:+、-、*、/、%、&、,功能等价于:变量=变量 双目操作符 表达式;,2023/7/6,64,例,main()int

31、 a,b,c,d,e;a=2,b=5,c=6,d=10;a+=b;b-=c;c*=d;d/=a;a%=d;printf(“%d,%d,%d,%d,%dn”,a,b,c,d,a);,结果?,0,-1,60,1,0,a的值是否相同?,应用举例,main()int a=3,b=2,c=4,d=8,x;a+=b*c;b-=c/b;printf(“%d,%d,%d,%dn”,a,b,c*=2*(a-c),d%=a);printf(“x=%dn”,x=a+b+c+d);,a=a+b*c=3+2*4=11,b=b-c/b=2-2=0,c=c*2*(a-c)=4*2*(11-4)=56,d=d%a=8%11=

32、8,输出:,11,0,56,8x=75,应用举例,一、条件运算符,是C语言中唯一的一个三目运算符,表达式1?表达式2:表达式3,功能:将条件语句化成赋值语句,格式:,判断表达式1的值,若为非0,将表达式2的值赋给x,否则,将表达式3的值赋给x.,2.功能:,x=(ab)?a:b;当 a=9,b=5时,x=9,条件运算要求有三个运算分量,并且不论条件是否成立,都必须是为同一个变量赋值。,2.2.8 条件运算符与条件表达式,二、条件表达式,1.格式:X=(表达式1)?(表达式2):(表达式3);,3.条件运算符的优先级:高于赋值,低于其他,4.结合性:从右向左,z=(ab)?a:(ad)?c:d;

33、,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,cA)9,9,9B)8,8,10C)8,10,9D)1,11,10,X为9y为10,X为8,条件运算的特点,2023/7/6,68,若w,x,y,z,m均为int型变量,则执行下面语句后的m值为:w=1;x=2;y=3;z=4;m=(wx)?w:x;m=(my)?m:y;m=(mz)?m:z;A)1 B)2 C)3 D)4,若w=1,x=2,y=3,z=4,则表达式wx?w:yz?y:z的值是:A)4 B)3 C)2 D)1,练习

34、,条件运算举例,2023/7/6,69,执行以下语句后,输出结果是:int w=3,z=7,x=10;printf(“%d,”,x10?x+100:x-10);printf(“%d,”,w+|z+);printf(“%d,”,!wz);printf(“%d,”,wA)0,1,1,1 B)1,1,1,1 C)0,1,0,1 D)0,1,0,0,算术运算关系运算逻辑运算条件运算,综合举例,2023/7/6,70,一、逗号运算符,(表达式 1,表达式 2,表达式 n),用于连接几个表达式,二、求解过程,顺序求解几个表达式,三、优先级,逗号运算符的优先级最低,四、结合性,从左向右,五、逗号表达式,逗号

35、表达式的值为最后一个表达式的值(表达式n 的值),X=(a=4*5,a*2),a+6),a为?,20,x为?,26,2.2.9 逗号运算符,结构体类型中引用结构体成员分量,结构体变量名.结构成员名结构体指针名-结构成员名,struct char name20;int age;char sex;stud1,stud2;,stud1.age=22;,二.“()”和“”运算符,()运算符:改变表达式的执行次序,类型转换运算,函数的参数表等。运算符:下标运算符,数组定义和数组元素的引用。,在C语言所有的运算符中,“.”,“-”,(),的优先级最高,2.2.10 其它运算一.“.”和“-”运算符,202

36、3/7/6,72,“*”是指针运算符,间接访问指针所指对象的内容“&”是地址运算符,取变量在内存中的地址,int a=10,c=5;float b=3.5;char str;int*pa;float*pb;,pa=,printf(“%d,%d,%f,%fn”,a,*pa,b,*pb);,四.type 运算符,type为某种类型标识符,(类型标识符)表达式,将表达式的结果强制转换为括号中指定的类型,单目运算符,三.“*”和“&”运算符,2023/7/6,73,格式:sizeof(表达式或数据类型)功能:求运算对象在内存中所占的字节数,求:printf(“%d,%dn”,sizeof(int),s

37、izeof(char);,五.sizeof 运算符,结果:2,1,求:printf(%d,sizeof(ASTn01212);,结果:10,2023/7/6,74,运算符小结,算术运算符:+,-,*,/,%赋值运算符:=关系运算符:,=,sizeof(),(type),,不同数据类型需先转换成同一类型,然后进行运算,方式,自动进行-隐式转换强制进行-显式转换,一、隐式转换(算术转换),优先级低的向优先级高的转换,int i;float f;double d;long e;表达式:10+a+i*f-d/e 的结果为:double,2.2.11 混合运算及数据类型转换,2023/7/6,76,格式

38、:(类型)表达式,(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.000000,2023/7/6,77,1.优先级:分为1 15级,不同级别混合运算时,按优先级先高后低。,2.结合性,相同级别进行运算时,按结合性处理。,单目、条件、赋值运算符的结合性是自右向左。,其它运算符的

39、结合性是自左向右。,四、优先级与结合性,2023/7/6,78,1.(8 3)结果,1111 0111 3 11111110取 00000001,a=8;b=5;c=2;求 b a?a*c:a%c 结果 5-9 16 0,3.a=8;b=5;c=2;求 a/b*b 结果,优先级相同,按结合性 自左向右。,综合举例,1,16,5,课堂作业,2023/7/6,79,一、C中的基本数据类型,要掌握每一种类型的定义方式(关键字),在存储空间中所占的字节数,存储形式,取值范围。,二、C中的运算符的几个要点(功能、与运算分量的关系、优先级、结合性、运算结果的类型)。,三、算术运算符中的%只使用在int类型

40、。,四、自增,自减运算的特点,灵活使用k+,+k。,数据类型与运算符总结,数据类型与运算符总结,2023/7/6,80,数据类型与运算符总结,数据类型与运算符总结,五、复合的赋值运算规则。,六、逗号运算表达式的值是最后一个表达式的值。,七、不同类型数据转换时的优先顺序。,八、算术运算、关系运算、赋值运算、逗号运算的优先级。,九、常用转义字符的特点 ddd、xhhh等只占一个字节。,2023/7/6,81,数据类型与运算符总结,数据类型与运算符总结,十、常用的常量表示方法 十进制 100;整数 八进制 0123;十六进制 0 xf3d;实数的小数,指数形式;字符常量 a;字符串常量“a”。,十一

41、、单目运算,双目运算的优先级和结合性特点,熟记基本概念和规则!,运算符的优先级和结合方向 1,运算符的优先级和结合方向 2,值得注意的几个问题 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,计算结果如下:,结论:表达式作为整体参加运算,课堂作业,2023/7/6,85,自反赋值,int x=5;求:x+=x-=x*x;,结果:x=-40,int

42、x=3;求:x+=x-=x*x;,结果:x=-12,课堂作业,运算符的优先级,2023/7/6,87,3 常用数学函数,3 常用数学函数,1.使用数学函数必须include命令引入math.h文件,它通常放在程序的开始,即如下面的格式:#include 2.常用数学函数 abs()求绝对值,用法:int abs(int x);labs()求绝对值,用法:long labs(long x);fabs()求绝对值,用法:double fabs(double x);sin()计算sin(x)值,用法:double sin(double x);cos()计算cos(x)值,用法:double cos(

43、double x);,2023/7/6,88,4 变量初始化,4 变量初始化,1.在C语言程序设计中,可以在定义变量的同时给变量赋初值,称为变量初始化,如:int i=6;float f=3.12;char c=a;2.定义时也可以使被定义的变量的一部分赋初值,如:int a,b,c=8;,2023/7/6,89,5 本章小结,5 本章小结,本章是C语言程序设计的基础,内容涉及到编程使用的基本概念和基础知识,使读者对C语言的数据类型、运算符、表达式、不同数据类型之间的转换等有了初步的了解,为进一步学习C语言打下了良好的基础。本章的知识点在于掌握C语言数据类型的定义和赋值方法,学会使用有关运算符

44、及表达式。只有很好的掌握了C的数据类型、表达式运算,才能恰当的运用于C语言的程序设计之中。,2023/7/6,90,综合练习,综合练习 一.单项选择,1.字符串ABC在内存中占用的字节数是。3 4 6 82.设int a,b,c均为 2,表达式a+b+c+的结果是。6 9 8 表达式出错3.如下程序的执行结果是。main()int n=1;printf(%d%d%dn,n,+n,n-);111 122 123 121,2023/7/6,91,二.填 空,1.设a=3,b=2,c=1,则ab的值为(),abc的值为()。2.设整型变量x,y,z均为5:执行“x-=y-z”后x=(),执行“x%=

45、y+z”后x=(),执行“x=(yz)?x+2:x-2,3,2”x=()。3.求以下程序的执行结果:#include main()int x=5,y=2;printf(1:%dn,!(y=x/2);printf(2:%dn,y!=x%3);printf(3:%dn,x0,1,0,5,5,3,结果是(1:0),结果是(2:0),结果是(3:0),结果是(4:1),2023/7/6,92,E N D,三.问答,完,为什么应避免对两个实数表达式作“相等”或“不相等”的判别?2.关系表达式能否视为一种整型表达式?为什么?,在判定两个浮点数是否相等时,由于计算机存储上出现的误差,会出现错误的结果。例如:

46、1.0/3.0*3.0=1.0 在数学上显然应该是一个恒等式,但由于1.0/3.0 得到的值的有效位数是有限的,并不等于0.3.,因此上面关系表达式的值为0(假),而不为(真)。故应避免对两个实数表达式作“相等”或“不相等”的判别。,由于关系表达式的值是整型数0或1,故也可以将其看成是一种整型表达式。,2023/7/6,93,思考练习题,一、思考题 二、选择题 三、填空题 四、编程题 P64页,2023/7/6,94,第三章 详细内容,1 常量与变量 2 整型数据类型 3 实型数据类型 4 字符型数据类型 5 不同类型数据间的混合运算 6 运算符与表达式 7 算术运算符与算术表达式 8 关系运算符与关系表达式 9 逻辑运算符与逻辑表达式10 赋值运算符与赋值表达式11 逗号运算符和逗号表达式12 常用数学函数 13 变量初始化 14 本章小节,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号