C语言程序设计 教学课件 ppt 作者 刘克成 等 chap3

上传人:E**** 文档编号:89424667 上传时间:2019-05-25 格式:PPT 页数:41 大小:350KB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者 刘克成 等 chap3_第1页
第1页 / 共41页
C语言程序设计 教学课件 ppt 作者 刘克成 等 chap3_第2页
第2页 / 共41页
C语言程序设计 教学课件 ppt 作者 刘克成 等 chap3_第3页
第3页 / 共41页
C语言程序设计 教学课件 ppt 作者 刘克成 等 chap3_第4页
第4页 / 共41页
C语言程序设计 教学课件 ppt 作者 刘克成 等 chap3_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 刘克成 等 chap3》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 刘克成 等 chap3(41页珍藏版)》请在金锄头文库上搜索。

1、1,了解 C语言运算符与表达式的概念 掌握基本运算符的功能及其与操作数的关系 掌握基本运算符的优先性和结合性 掌握表达式的结果类型 掌握数据类型的转换,教学目的:,第3章 运算符与表达式,2,教学内容: 基本运算符及其表达式 混合运算时数据类型的转换,3,3.1 基本运算符及其表达式,著名计算机科学家、PASCAL语言发明者N沃思提出了程序定义的著名公式(沃思公式): 数据结构算法程序 相应的,在解决问题时不仅要考虑需要哪些数据,还要考虑对数据的操作,以达到求解问题的目的,因此运算符和表达式是程序设计中首要考虑的基本问题。,4,一般来说,语言的基本运算符与表达式包括: 算术运算符及其表达式 赋

2、值运算符及其表达式 关系运算符及其表达式 逻辑运算符及其表达式 位运算符及其表达式 条件运算符及其表达式 逗号运算符及其表达式 sizeof运算符 表达式就是变量、常量、函数等运算量按照一定规则和运算符连接而成的式子。,5,3.1.1 C语言运算符概述 运算:是对数据的加工,被加工的数据称运算量或操作数,最基本的的运算形式由运算符记述; 运算符:是一种向编译程序说明一个特定的数学或逻辑运算的符号,简单说即用来记述数据运算形式的符号; 运算符优先级:表达式中优先级较高的运算符先于优先级较低的运算符进行运算;当一个运算量两侧的运算符优先级相同时,则依据运算符的结合性处理; 运算符结合性:有左结合性

3、和右结合性两种。,6,7,学习运算符应注意的几个问题: 运算符的功能 与运算量的关系 运算量的个数(是几目或几元运算符) 运算量的类型 运算符的优先级别(先高后低) 结合方向(在运算量两侧运算符优先级相同时) 表达式值的类型(尤其不同类型数据进行运算时),8,3.1.2 算术运算符及其表达式 1.算术运算符 算术运算符用于各类数值运算。语言基本的算术运算符有5种:+、-、*、/、%;自加、自减运算符2种:+、-;正负号运算符2种:+、-。,1)基本算术运算符( + - * / %) 功能:加、减、乘、除、取余(模运算); 目数:全部是双目运算符; 优先级:先乘除后加减(*、/、%同一级别,+、

4、-同一级别); 结合方向:全部是左结合性。,9,注意: %运算要求运算量必须为整型数据(如5%2=1正确,而5.5%2不正确); /运算时若运算量均为整型则结果也为整型,舍去小数(如5/2=2,而5/2.0=2.5); +、-、*、/运算时,运算量有实数时则结果为double型; 字符型数据可与数值型数据混合运算(如A+1=66)。,10,2)自加、自减运算符 (+ -) 功能: 前置:+i,-i,在使用i之前i值先加/减1; 后置:i+,i-,在使用i之后,i值再加/减1; 目数:均为单目运算符,且要求运算量为变量; 优先级:高于基本算术运算符的优先级; 结合方向:右结合性。 例: j=3;

5、 k=+j; j=3; k=j+; j=3; k=-j; j=3; k=j-;,结果:k=2, j=2,结果:k=3, j=2,11,3)正负号运算符 (+ -) 功能:改变数值的正负; 目数:单目; 优先级:高于*、/、%的优先级,与+、-同级; 结合方向:右结合性; 例: i=3; j=-i+; 因 - 与 = 优先级相同,则按又结合性,表达式 -i+ 等价于 -(i+), 则结果为:i 值为4,j 值为-3。,12,2.算术表达式 算术表达式的定义:由算术运算符和括号将常量、变量、函数等连接起来的式子;单个常量、变量和函数可以看作是表达式的特例。 如a*b+c/d、23+2*3.14*R

6、、x。 算术表达式的运算:若一个运算符两侧的数据类型不同,先自动进行类型转换,使两者具有同一类型,再进行运算。 整型、单精度型、双精度型和字符型数据之间可以混合运算(字符型数据可以与整型通用) 如:35+a-8.8+27.34*c是合法的。,13,注意:,Turbo C环境对于运算符的解释顺序,如: i+j 会被解释为 i+(+j),14,3.1.3 赋值运算符及其表达式 赋值运算符用于赋值运算,分为简单赋值(=)、复合算术赋值(+=、-=、*=、/=、%=)和复合位运算赋值(&=、|=、=、=、=)3类共11种。 相应的,由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。,15

7、,1. 简单赋值符及其表达式 简单赋值符记为“=”,由“=”连接的式子称为简单赋值表达式,其一般形式为: 变量=表达式 功能:将右侧表达式的值赋给左侧的变量 目数:双目 结合方向:右结合性 例: x = 10 y = 4*x+5*a y = i+-j /* 把 i+-j 的结果赋给y */ x = (a=5)+(b=8) /*把5赋给a,8赋给b,再将(a=5)和(b=8) 相加赋给x */,16,如果赋值运算符两边的数据类型不相同,系统将自动进行数据类型的转换,把赋值符右边的类型转换成左边的类型 常见的几种转换规定: 实型数据赋给整型变量:舍去小数部分 整型数据赋给实型变量:数值不变,以浮点

8、形式存放 字符型数据赋给整型变量:将字符ASCII码放到整型变量的低8位中,高8位全为0 整型数据赋给字符型变量:只把低8位赋给字符型变量,如:int i; float j=2.72; i=j; 则i 的值为2,如:int i=2; float j; j=i; 则j 的值为2.0,如:int a; char c1=A; a=c1; 则a 的值为65,如:int a=322; char c2; c2=a; 因a的低8位为01000010,即十进制66,按ASCII码对应于字符B,所以c2为字符B,17,2. 复合赋值符及其表达式 分类:复合算术赋值符(+=、-=、*=、/=、%=)和复合位运算赋

9、值符(&=、|=、=、=、 等价于: = 例: a+=12 等价于 a=a+12 x*=y+6 等价于 x=x*(y+6) x+=a+y*3 等价于 x= x+(a+y*3),又如: int a=12; a+=a-=a*a 等价于 a= a+( a= a - (a*a) 则 a=-264,18,注意: 赋值运算符的优先级低于算术运算符、关系运算符和逻辑运算符; 赋值表达式具有右结合性; 赋值表达式中的表达式又可以是一个赋值表达式; 赋值表达式左侧必须是变量,而不能为常量或表达式;,如:x = 8 1 应先求表达式8 1的值为0,再将该值赋值给x,则x的值为0,如:a = b = 20/5 运算

10、时先计算20/5,结果为4,将4赋值给变量b,再将4赋值给变量a,自右至左运算,如: x = ( y = 20) x = y = z = 8 x = 10 + ( y = 5 ) a = ( b = 20 ) / (c = 10),如:3 = x 2*y , a + b =3 都是错误的,19,3.1.4 关系运算符及其表达式 1. 关系运算符 用于比较两个量的运算符称为关系运算符。 语言的关系运算符有: = = != 目数:双目 结合方向:左结合性 优先级:低于算术运算符,高于赋值运算符,且 、=级别相同,并高于= 、!=,而= 、!=的级别相同 如: 8 5 等价于 (8 5 a + b

11、b + c 等价于 (a + b) (b + c ) 3 + a = b - a 等价于 (3 + a ) = (b - a ),20,2. 关系表达式 用关系运算符将两个表达式连接起来,进行关系运算的式子,称为关系表达式,被连接的表达式可以是算术表达式、关系表达式和逻辑表达式。 一般形式: 表达式的值:是逻辑值“真”或“假”,而在TC中用1表示“真”,用0表示“假” 如: 5 3 /* 表达式值为1 */ 5 = 3 /* 表达式值为0 */ (a = 3 ) (b = 5 ) /* 表达式值为0 */,如: a + b c - d a = 2*b A B -i-5*j = k + 1,又如

12、: int a = 3, b=2, c =1, d, f; a b /* 表达式的值为1 */ (a b) = c /* 表达式的值为1 */ b + c b /* d值为1 */ f = a b c /* f值为0 */,21,注意: 应避免对实数作相等或不等的判断,因为实数以近似值表示,存在存储误差,可采用“fabs(表达式)精度”的形式; 注意区分“=”和“=”,如:1.789 / 3.0 *3.0 = 1.789 上式的结果用语言在计算机中得到的值为“假”。 而上式中左右两个表达式的比较可以用下式得到正确结果: fabs(1.789 / 3.0 *3.0 - 1.789 ) 1 e -

13、6,如: int a = 0, b = 1; if (a = b ) printf(“ a equal to b “); else printf(“ a not equal to b “); 上述代码中因为表达式 a = b 的值总为1,即总为真,因此,总是输出“ a equal to b “,22,3.1.5 逻辑运算符及其表达式 1. 逻辑运算符 逻辑运算符用于逻辑运算,其运算符共三个:! (逻辑非)、 &(逻辑与) 、 |(逻辑或)。 语言没有逻辑类型数据,当进行逻辑判断时,如果数据的值为非0,则认为“逻辑真”,数据的值为0,则认为“逻辑假”;而逻辑表达式的值为真,用 1 表示,逻辑表达

14、式的值为假,用 0 表示。,23,1)!(逻辑非) 逻辑非是一元运算,参与运算的量为真时,结果为假;参与运算的量为假时,结果为真。 2)&(逻辑与) 逻辑与是二元运算,参与运算的两个量都为真时,结果才为真;否则为假。 3)|(逻辑或) 逻辑或是二元运算,参与运算的两个量只要有一个为真,结果就为真;只有两个运算量都为假时,结果才为假。,如:int a= 6, b = 4; ! a /* 结果为0 */ ! (a b ) /* 结果为1,因为a b 的值为0,!0值为1 */,如:int a= 6, b = 4, c = 2; a & b /* 结果为1 */ (a 1 ) /* 结果为0,因a

15、b & b c /* 结果为1*/,如:int a= 6, b = 4, c = 2; a | b /* 结果为1 */ (a c) /* 结果为1 */,24,2. 逻辑表达式 用逻辑运算符将表达式连接起来就构成了逻辑表达式。 一般形式: 其中表达式又可以为逻辑表达式,即形成嵌套 表达式的值:是式中各种逻辑运算的最后值;以 1 表示真,以 0 表示假。 逻辑运算符的属性: 目数:&和 | 均为双目运算符,! 为单目运算符 结合性: &和 | 均为左结合性,! 为右结合性 优先级:三者中 ! 最高,&次之,| 最低;! 高于算术运算符, &和| 低于关系运算符,如: ! (5 3) /* 结果为0 */ (a b) & (b c) /* 对ab和bc进行逻辑与运算 */ (a b) & (b c) | (b = 0) /*对ab和bc进行逻辑与运算,结果再与b = 0逻辑或运算*/,如: a b & c d 等价于 (a b) & (c d) !b = c | d c & x + y c) & (x + y) b) 5 3 & 2 | 8 3) & 2 | (8 (4 - (!0),25,注意: 逻辑表达式的短路特性:逻辑表达式求

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号