《第2章表达式.ppt》由会员分享,可在线阅读,更多相关《第2章表达式.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、(加法运算符,或正值运算符。如(加法运算符,或正值运算符。如3+5,+3)(减法运算符,或负值运算符。如(减法运算符,或负值运算符。如5-2,-3)*(乘法运算符。如乘法运算符。如3*5)(除法运算符,(除法运算符,两个整数相除的结果为整数两个整数相除的结果为整数,如如5/3,值为,值为1)。)。(模运算符,或称求余运算符,两侧(模运算符,或称求余运算符,两侧均应为整均应为整 型数据型数据,如的值为)。,如的值为)。2.5 算术运算符与算术表达式算术运算符与算术表达式 2.5.1 基本的算术运算符基本的算术运算符2.4 C+的运算符(参见教材P31)运算对象包括常量、变量、函数等。例如,下面是
2、运算对象包括常量、变量、函数等。例如,下面是一个合法的一个合法的C+算术表达式:算术表达式:a*b/c-1.5+aC+规定了各种运算符的结合方向(结合性),算规定了各种运算符的结合方向(结合性),算术运算符的结合方向为术运算符的结合方向为“自左至右自左至右”,即运算对象先,即运算对象先与左面的运算符结合。见附录与左面的运算符结合。见附录B(P484)2.5.2 算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性在表达式中常遇到不同类型数据之间进行运算,如在表达式中常遇到不同类型数据之间进行运算,如指定指定i为为int型,型,f为为float型,型,d为为double型,型,e
3、为为long型型 10+a+i*f-d/e在进行运算时,不同类型的数据要先转换成同一类型,在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。然后进行运算。转换的规则按图所示。转换的规则按图所示。2.5.3 表达式中各类数值型数据间的混合运算表达式中各类数值型数据间的混合运算在在C和和C+中,常在表达式中使用中,常在表达式中使用自增自增(+)和和自减自减(-)运算符,他们的作用是运算符,他们的作用是使变量的值增使变量的值增1或减或减1。如如+i(在使用在使用i之前,先使之前,先使i的值加的值加1,如果,如果i的原值为的原值为3,则执行则执行j=+i后,后,j的值为的值为4)-i (在
4、使用在使用i之前,先使之前,先使i的值减的值减1,如果,如果i的原值为的原值为3,则执行则执行j=-i后,后,j的值为的值为2)2.5.4 自增和自减运算符自增和自减运算符i+(在使用在使用i之后,使之后,使i的值加的值加1,如果,如果i的原值为的原值为3,则执行则执行j=i+后,后,j的值为的值为3,然后,然后i变为变为4)i-(在使用在使用i之后,使之后,使i的值减的值减1,如果,如果i的原值为的原值为3,则执行则执行j=i-后,后,j的值为的值为3,然后,然后i变为变为2)+i是先执行是先执行ii+1后,再使用后,再使用i的值;的值;而而i+是先使用是先使用i的值后,再执行的值后,再执行
5、ii+1。正确地使用正确地使用+和和-,可以使程序简洁、清晰、高效。,可以使程序简洁、清晰、高效。请注意:请注意:(1)自增运算符自增运算符(+)和自减运算符和自减运算符(-)只能用于只能用于变量变量,而不能用于常量或表达式。而不能用于常量或表达式。(2)前置前置+和和-的结合方向是的结合方向是“自右至左自右至左”,后置后置+和和-的结合方向是的结合方向是“自左至右自左至右”见附录见附录B。分析以下程序,思考分析以下程序,思考i,j,m,n的值的值#include using namespace std;void main()int i,j,m,n;i=8;j=10;m=+i+j+;n=(+i
6、)+(+j)+m;coutitjtmtnendl;可以利用强制类型转换运算符将一个表达式转换成所需类型。可以利用强制类型转换运算符将一个表达式转换成所需类型。例如:例如:(double)(将(将a转换成转换成double类型)类型)(int)()(x+y)(将将x+y的值转换成整型)的值转换成整型)(float)(5%3)(将将5%3的值转换成的值转换成float型)型)强制类型转换的一般形式为:强制类型转换的一般形式为:(类型名)(表达式)(类型名)(表达式)如果写成如果写成()()只将转换成整型,然后与相加。只将转换成整型,然后与相加。需要说明的是在强制类型转换时,得到一个所需类型的中间变
7、需要说明的是在强制类型转换时,得到一个所需类型的中间变量,但原来变量的类型未发生变化量,但原来变量的类型未发生变化。2.5.5 强制类型转换运算符强制类型转换运算符例例2.4 强制类型转换。强制类型转换。#include using namespace std;int main()float x;int i;x=3.6;i=(int)x;coutx=x,i=iendl;return 0;赋值符号赋值符号“”就是赋值运算符,它的作用是将一就是赋值运算符,它的作用是将一个数据赋给一个变量。个数据赋给一个变量。如如“a=3”的作用是执行一次赋值操作(或称赋值的作用是执行一次赋值操作(或称赋值运算)。
8、把常量运算)。把常量3赋给变量赋给变量a。也可以将一个表达式的也可以将一个表达式的值赋给一个变量。值赋给一个变量。2.6 赋值运算符与赋值表达式赋值运算符与赋值表达式 2.6.1 赋值运算符赋值运算符2.6.2 赋值过程中的类型转换赋值过程中的类型转换例例2.5 类型转换类型转换#include using namespace std;int main()short int i=289;char c;c=i;coutcendl;return 0;0000 000010010 0001i=2890010 0001C=33在赋值符在赋值符“”之前加上其他运算符,可以构成复之前加上其他运算符,可以构
9、成复合的运算符。如果在合的运算符。如果在“”前加一个前加一个“”运算符就运算符就成了复合运算符成了复合运算符“”。例如例如 a+=3 等价于等价于 a=a+3 x*=y+8 等价于等价于 x=x*(y+8)x%=3 等价于等价于 x=x%32.6.3 复合的赋值运算符复合的赋值运算符为便于记忆,可以这样理解:为便于记忆,可以这样理解:a+=b (其中其中a为变量,为变量,b为表达式为表达式)a+=b (将有下划线的将有下划线的“a+”移到移到“=”右侧右侧)注意,如果注意,如果b是包含若干项的表达式,则相当于它是包含若干项的表达式,则相当于它有括号。如有括号。如 x%=y+3 x%=(y+3)
10、x=x%(y+3)(不要错认为不要错认为x=x%y+3)C+可以使用以下几种复合赋值运算符:可以使用以下几种复合赋值运算符:,*,&,|由赋值运算符将一个变量和一个表达式连接起来的由赋值运算符将一个变量和一个表达式连接起来的式子称为式子称为“赋值表达式赋值表达式”。一般形式为一般形式为:如如“5”是一个赋值表达式。是一个赋值表达式。2.6.4 赋值表达式赋值表达式如如int a=3,b,c;b=a;/b是左值是左值c=b;/b也是右值也是右值下面是赋值表达式的例子:下面是赋值表达式的例子:a=b=c=5 (赋值表达式值为赋值表达式值为5,a,b,c值均为值均为5)a=5+(c=6)(表达式值为
11、表达式值为11,a值为值为11,c值为值为6)a=(b=4)+(c=6)a=(b=10)/(c=2)请分析下面的赋值表达式:请分析下面的赋值表达式:(a=3*5)=4*3赋值表达式作为左值时应加括号。赋值表达式作为左值时应加括号。赋值表达式也可以包含复合的赋值运算符。如 a+=a-=a*a如果a的初值为12,此赋值表达式的值是多少?练习:练习:若若a、b、c、d都是都是int类型变量且初值为类型变量且初值为0,以下,以下选项中不正确的赋值语句是选项中不正确的赋值语句是_。A)a=b=c=100;B)d=(c=22)(b+);C)c+=b;D)d+;若有以下程序段,其输出结果是若有以下程序段,其
12、输出结果是_。int a=0,c=0;c=(a-=a-5);coutacendl;A)00 B)5,5 C)5,5 D)10 10C+提供一种特殊的运算符提供一种特殊的运算符逗号运算符。逗号运算符。用它将两个表达式连接起来用它将两个表达式连接起来。如。如 3+5,6+8 称为逗号表达式,又称为称为逗号表达式,又称为“顺序求值运算符顺序求值运算符”。逗号表达式的一般形式为逗号表达式的一般形式为:表达式,表达式表达式,表达式逗号表达式的求解过程是:逗号表达式的求解过程是:先求解表达式先求解表达式1,再求解表,再求解表达式达式2。整个逗号表达式的值是表达式。整个逗号表达式的值是表达式2的值。的值。2
13、.7 逗号运算符与逗号表达式逗号运算符与逗号表达式一个逗号表达式又可以与另一个表达式组成一个新一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如的逗号表达式,如(a=3*5,a*4),a+5逗号表达式的一般形式可以扩展为逗号表达式的一般形式可以扩展为表达式,表达式,表达式,表达式,表达式,表达式,表达式,表达式它的值为表达式的值。它的值为表达式的值。下面两个表达式的作用是不同的:下面两个表达式的作用是不同的:x=(a=3,6*3)x=a=3,6*a在用在用cout输出一个逗号表达式的值时,要将该逗号输出一个逗号表达式的值时,要将该逗号表达式用括号括起来,如表达式用括号括起来,如cou
14、t(3*5,43-6*5,67/3)endl;已定义一个整型变量x,则表达式x=1,x+,x+2的值是_。o A)1 o B)2 o C)3 o D)4 练习作业作业一、选择题一、选择题(1)设)设i=1,j=2,则表达式,则表达式i+j的值为()。的值为()。1 2 3 4(2)设)设i=1,j=2,则表达式,则表达式+i+j的值为()。的值为()。1 2 3 4(3)执行下列语句后,)执行下列语句后,x的值是(),的值是(),y的值是()。的值是()。int x,y;x=y=1;+x|+y;不确定不确定 0 1 2(4)已知)已知x=5,则执行语句,则执行语句x+=x-=xx;后,后,x的值为()。的值为()。25 40 -40 20二、预习实验内容二、预习实验内容 实验二实验二、数据类型与表达式、数据类型与表达式 实验内容:教材实验内容:教材P41第第4题,教材题,教材P42第第7、8题。题。