程序设计基础第3章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例: a=12; a+=a-=a*a
//a=-264 等价于 等价于a=a+(a=a-(a*a))
赋值运算符的优先级 赋值运算符的优先级低于算术运算符, 赋值运算符的优先级低于算术运算符, 高 () ++、--、-(取负 取负) 、 、 取负 算术运算符 *、/、% 、、 低 赋值运算符 +、、
例1: : 例2: : int a = 17,b = 7; , int a=2,b=3,c=63; , , a /= b %=4 ( c /= ( a *= 4 ) += ( b += 6 ) % 5 )-- -- 运行后表达式的值: 运行后表达式的值: 运行后表达式的值:5 运行后表达式的值:5 运算后各变量的值: 运算后各变量的值: 运算后各变量的值: 运算后各变量的值:a=12、 b=9、 c=4 、 、 a = 5、 b = 3 、
例:int s,a=5; , ; s = a++;//s的值 ,变量 本身的值也改变为 的值5,变量a本身的值也改变为 本身的值也改变为6 ; 的值 s = ++a;// s的值 ,变量a本身的值也改变为 ; 的值6,变量 本身的值也改变为6 的值 本身的值也改变为
变量声明与初始化 表达式 表达式的值 int a = 1; a ++ 1 int a = 1; ++ a 2 float x = 1.2; x++ 1.2 float x = 1.2; ++ x 2.2 int a = 1; a -1 int a = 1; -- a 0 float x = 1.2; x -1.2 float x = 1.2; --x 0.2
f; 例 例 //表达式值为 表达式值为5, 值为5 例: a=b=c=5 int i; float 表达式值为 ,a,b,c值为 值为 i; //结果 结果i=2; a=(b=5) i=2.56; int结果 // b=5;a=5 i=10; a=5+(c=6) //表达式值 ,c=6,a=11 表达式值11, 表达式值 f=i; a=(b=4)+(c=6) f=10.0 //表达式值 ,a=10,b=4,c=6 表达式值10, 表达式值 则 a=(b=10)/(c=2) //表达式值 ,a=5,b=10,c=2 表达式值5, 表达式值
C++ 运 算 符
算术运算符: 算术运算符:+ - * / % ++ -关系运算符: 关系运算符:< <= == > >= != 逻辑运算符:! 逻辑运算符:! && || 位运算符 : << >> ~ | ^ & 赋值运算符: 赋值运算符:= 及其扩展 条件运算符: 条件运算符:?: 逗号运算符: 逗号运算符:, 指针运算符: 指针运算符:* & 求字节数: 求字节数: sizeof 强制类型转换:(类型) :(类型 强制类型转换:(类型) 分量运算符: 分量运算符:. -> 下标运算符: 下标运算符:[] () 其它 :
程序设计基础
主讲教师: 办公室: 号楼 号楼503 主讲教师:崔莉莉 办公室:15号楼 Email:llcui@ : 阶段起步入门网站 第1阶段起步入门网站 阶段起步入门网站:/bp/page 课程论坛: 课程论坛:/bbs/崔莉莉工作室 崔莉莉工作室
学习运算符应注意: 学习运算符应注意:
运算符功能 与运算量关系
要求运算量个数 要求运算量类型
运算符优先级别 结合方向 结果的类型
算术运算符和表达式
基本算术运算符: 基本算术运算符: + - * / % 双目运算符 结合方向:从左向右(左结合性) 结合方向:从左向右(左结合性) 优先级: (取负) 优先级: -(取负) , * / % , + - 说明: 说明: “-”可为单目运算符(取负)时,右结合 ”可为单目运算符(取负) 性 两整数相除( ),结果为整数( ),结果为整数 两整数相除(/),结果为整数(若操作数 中有一个是实型数,则结果为实数型)。 中有一个是实型数,则结果为实数型)。 例 例 5%2 = 5%2 = %要求两侧均为整型数据 1 要求两侧均为整型数据 注:余数的符号与被
4 数据加工处理
学习要点: 学习要点: 表达式
算术运算符 取负运算符 取余运算符 自增、 自增、自减运算符 复合赋值运算符
表达式
表达式:将常量、变量、 表达式:将常量、变量、函数通过运算符连接起 来的式子。 来的式子。 表达式值:经过对表达式的运算所得到的值。 表达式值:经过对表达式的运算所得到的值。 程序中对数据进行的各种加工处理, 程序中对数据进行的各种加工处理,都是通过表 达式描述出来的。 达式描述出来的。 在表达式中关注的核心是运算符 运算符。 在表达式中关注的核心是运算符。 例: 3+x/y int(a)*4
i = 0、1、2、3、4、 5、6、7 …, 、 、 、 、 、 、 、 , 表达式的值= 、 、 、 、 、 、 、 表达式的值 0、1、2、3、0、1、2、 3… i%4 i = 0、1、2、3、4、 5、6、7 …, 、 、 、 、 、 、 、 , 表达式的值= 、 、 、 、 、 、 、 表达式的值 1、2、3、0、1、2、 3、0… (i % 4)+1 或 (i+1)%4 ) ) i = 、 、 , 表达式的值= 、 、 、 、 、 、 、 表达式的值 2、3、4、 5、2、3、4、5 …, (i % 4)+2 )
复合赋值运算符的优先级和赋值运算符处于同一级, 复合赋值运算符的优先级和赋值运算符处于同一级,服从右结合
说明: 说明
结合方向: 结合方向:自右向左 左侧必须是变量, 左侧必须是变量,不能是常量或表达式 赋值转换规则:使赋值号右边表达式值自动转换成其 使赋值号右边表达式值自动转换 赋值转换规则 使赋值号右边表达式值自动转换成其 左边变量的类型 例 3=x-2*y; 赋值表达式的值与变量值相等,且可嵌套 赋值表达式的值与变量值相等 且可嵌套 a+b=3;
赋值运算符和表达式
简单赋值运算符
符号: 符号: = 格式: 变量标识符=表达式 格式: 变量标识符 表达式 作用:将一个数据(常量或表达式) 作用:将一个数据(常量或表达式)赋给一个变量
例 a=3; d=func(); c=d+2;
复合赋值运算符 种类: 种类:+= -= *= /= %=
含义: 含义: exp1 op= exp2 a+=3 x*=y+8 x%=3 exp1 = exp1 op exp2 a=a+3 x=x*(y+8) x=x%3
表达式书写示例2 表达式书写示例2
要求: 个实型变量a、 、 , 要求:设3个实型变量 、b、c,依次存放着三角形 个实型变量 的三个边长,声明实型变量area,并写出把三角形 的三个边长,声明实型变量 , 的面积存入其中的表达式。 的面积存入其中的表达式。三角形的面积可用公式 √s(s-a)(s-b)(s-c) 计算,其中 表示周长的一半 计算,其中s表示周长的一半 表示周长的一半. float area; area = sqrt( s * (s - a) * (s - b) * (s - c))
C++表示式的基本规则 C++表示式的基本规则
(1)最简单的表达式可以没有运算符,即单个的常 )最简单的表达式可以没有运算符, 量、变量、函数,都是表达式。 变量、函数,都是表达式。
例如: 、 、 例如:31、x、getche()等 等
(2)运算符和表达式结合起来,可以构成新的表达 )运算符和表达式结合起来, 结合必须符合C++的语法规定,否则就是 的语法规定, 式,结合必须符合 的语法规定 语法错误。 语法错误。
表达式书写示例1 表达式书写示例1
要求: 个实型变量a、 、 , 要求:设3个实型变量 、b、c,依次存放着一元二 个实型变量 次方程的3个系数 声明实型变量x1、 , 个系数, 次方程的 个系数,声明实型变量 、x2,并写出 把方程的两个根存入其中的表达式, 把方程的两个根存入其中的表达式,可以使用求算 术平方根的函数sqrt(x),其中 是需要开平方的表 术平方根的函数 ,其中x是需要开平方的表 达式。 达式。 float x1,x2; x1 = (-b + sqrt(b * b – 4 * a * c))/(2 * a) x2 = (-b – sqrt(b * b – 4 * a * c))/(2 * a)
运算后变量的值 2 2 2.2 2.2 0 0 0.2 0.2
() ++、--、、 、 *、/、% 、、 +、、
表达式运算优先级例题分析: 表达式运算优先级例题分析:
变量声明与初始化为: 变量声明与初始化为:int a=7,b=2; 分析表达式 -b + b / (3 + a) - a % b 的运算过程
自增运算符++ 自增运算符 、自减运算符 -作用:使变量值加 或减 或减1 作用:使变量值加1或减 种类: 种类: 前置 + + i , - - i
(先执行 或i-1,再使用 值) 先执行i+1或 ,再使用i值 先执行
后置 i + + ,i - (先使用 值,再执行 或i-1) 先使用i值 再执行 再执行i+1或 ) 先使用 例 j=3; k=++j; j=3; k=j++; j=3; cout<<++j; j=3; cout<<j++; a=3;b=5;c=(++a)*b; a=3;b=5;c=(a++)*b; //k=4,j=4 //k=3,j=4 //4 //3 //c=20,a=4 //c=15,a=4
k + x× y − 4 例: 应描述为 w − 7 × PI (k + x ∗ y - 4) (w - 7 ∗ PI)
说明: 说明: 参与运算的数据都是整型时, 参与运算的数据都是整型时,运算结果为整型 参与运算的数据有实型时, 参与运算的数据有实型时,运算结果为实型
练习与思考
设整型变量i的值为 、 、 、 、 、 , 设整型变量 的值为0、1、2、3、4、…,针对下列要 的值为 分别写一个包含i的表达式 的表达式: 求,分别写一个包含 的表达式: 1. 表达式的值为0、1、2、3、0、1、2、 3… 表达式的值为 、 、 、 、 、 、 、 2. 表达式的值为 、2、3、0、1、2、3、0 … 表达式的值为1、 、 、 、 、 、 、 3. 表达式的值为 、3、4、5、2、3、4、5 … 表达式的值为2、 、 、 、 、 、 、
自增运算符++ 自增运算符 、自减运算符 -说明: 说明: ++ --只用于单个变量,不能用于常量和某些表 某些表 只用于单个变量,不能用于常量和某些 达式, 达式,如:5++,(a+b)++均错误 , 均错误 ++ --结合方向: 右结合性(自右向左) 结合方向: 右结合性(自右向左) 结合方向 优先级: */% +- 优先级:++ -- -(取负) (取负) 自增、 自增、自减运算符参与运算的表达式不但产生出一个 -i++; 例 -i++ ; -(i++) 运算结果,而且改变参与运算的变量的值。 运算结果,而且改变参与运算的变量的值。 i=3; cout<<-i++; i=3; cout<<-i++; //-3
5/2 = 2 5/2 = -5/2.0 ==-2.5 -5/2.0 -5%2 = -1 -5%2 = 5%1 = 0 5%1 = 5.5%2 (×) 5.5%2
除数符号相同
例 例
四则运算符实例
算术表达式
由于高级语言通常以行方式来描述的, 由于高级语言通常以行方式来描述的,故不能 用平时书写的形式来描述表达式。 用平时书写的形式来描述表达式。
例如: 、 例如:-x、x + 3
(3)如果一个表达式中包含多个运算符,需要确定 )如果一个表达式中包含多个运算符, 按怎样的次序依次进行运算,注意C++每种运 按怎样的次序依次进行运算,注意 每种运 算符的优先级。 算符的优先级。
例如: 例如:x + y * z、x - y + z、x / (y + z) 、 、