第3讲 运算符与表达式.ppt
《第3讲 运算符与表达式.ppt》由会员分享,可在线阅读,更多相关《第3讲 运算符与表达式.ppt(150页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.5 1.5 表达式表达式 表达式是由数据和运算符,按求值规则,表达一个值的式子。表达式可以分为:算术表达式、逻辑表达式、赋值表达式、条件表达式、逗号表达式。运算符是以简洁的方式表达对数据操作的符号算术运算符算术运算符+-*/%+-关系运算符关系运算符 =!=逻辑运算符逻辑运算符!&|位运算符位运算符|&赋值运算符赋值运算符=及扩展的复合运算符及扩展的复合运算符条件运算符条件运算符?:逗号运算符逗号运算符,指针运算符指针运算符*&求字节运算符求字节运算符sizeof强制类型转换符强制类型转换符类型类型分量运算符分量运算符.-下标运算符下标运算符其他其他():new delete一、运算符、表
2、达式优先级优先级运算符运算符结合性结合性1()-:L R2!+-+-&*类型类型 sizeof new delete .-*R L3*/%L R4+-L R5L R6 =L R7L R8=!=L R9&L R10L R11|L R12&L R13|L R14?:R L15=*=/=+=-=|=R L16,L R 单目运算符单目运算符 运算符 右操作数例如:-123+500 双目运算符双目运算符 左操作数 运算符 右操作数例如:a*3xy 三目运算符三目运算符 条件运算:操作数1?操作数2 :操作数3例如:a?b:c根据对操作数的要求不同,运算符分为:表达式是由数据和运算符,按求值规则,表达一个
3、值的式子。算术表达式逻辑表达式赋值表达式条件表达式逗号表达式例如:3.2/简单表达式,值为3.22+3/常量表达式,值为5a/简单表达式,值为变量a的值x=(a+b)*c;/较为复杂的表达式表达式是可以嵌套的,比如y=x=a+b。二、算术表达式算术表达式由算术运算符和操作数组成,结果值是算术值+加法,或单目求正-减法,或单目求负*乘法/除法%求模(求余)sizeof求存储字节基本算术运算符有:1基本运算当双目运算符的两个操作数都是整型,结果值为整型运算运算例子例子结果结果+2+3;5+10;-13 4;4 7;*3*4;5*11;/8/2;6/4;4/5;-11/2;或或 6/0;%10%3;
4、23%4;5%0;sizeofsizeof(256)sizeof(int)当当双目运算符的两个操作数都是整型,双目运算符的两个操作数都是整型,结果值为整型结果值为整型运算运算例子例子结果结果+2+3;5+10;-13 4;4 7;*3*4;5*11;/8/2;6/4;4/5;-11/2;或或 6/0;%10%3;23%4;5%0;sizeofsizeof(256)sizeof(int)简单截取整数部分简单截取整数部分 当当双目运算符的两个操作数都是整型,双目运算符的两个操作数都是整型,结果值为整型结果值为整型运算运算例子例子结果结果+2+3;5+10;-13 4;4 7;*3*4;5*11;/
5、8/2;6/4;4/5;-11/2;或或 6/0;%10%3;23%4;5%0;sizeofsizeof(256)sizeof(int)由编译器选择由编译器选择 当当双目运算符的两个操作数都是整型,双目运算符的两个操作数都是整型,结果值为整型结果值为整型运算运算例子例子结果结果+2+3;5+10;-13 4;4 7;*3*4;5*11;/8/2;6/4;4/5;-11/2;或或 6/0;%10%3;23%4;5%0;sizeofsizeof(256)sizeof(int)除数为除数为 0,溢出,无值定义溢出,无值定义 当当双目运算符的两个操作数都是整型,双目运算符的两个操作数都是整型,结果值为
6、整型结果值为整型运算运算例子例子结果结果+2+3;5+10;-13 4;4 7;*3*4;5*11;/8/2;6/4;4/5;-11/2;或或 6/0;%10%3;23%4;5%0;sizeofsizeof(256)sizeof(int)求模求模(求余数)(求余数)当当双目运算符的两个操作数都是整型,双目运算符的两个操作数都是整型,结果值为整型结果值为整型运算运算例子例子结果结果+2+3;5+10;-13 4;4 7;*3*4;5*11;/8/2;6/4;4/5;-11/2;或或 6/0;%10%3;23%4;5%0;sizeofsizeof(256)sizeof(int)除数为除数为0,无值
7、定义,无值定义当双目运算符的两个操作数都是整型,结果值为整型运算运算例子例子结果结果+2+3;5+10;-13 4;4 7;*3*4;5*11;/8/2;6/4;4/5;-11/2;或或 6/0;%10%3;23%4;5%0;sizeofsizeof(256)sizeof(int)操作数可以是操作数可以是常量,变量,类型常量,变量,类型除求余%运算外,浮点数可以进行各种算术运算运算运算例子例子结果结果+2.0+.33;5.1+10.0;-13.6 4.2;4.0 7.0;*3.0*4.4;7.5*11.0;/8.6/2.0;5.0/4.0;-11.0/4.0;6.0/0.0;sizeofsiz
8、eof(3.1415)sizeof(double)当双目运算符的两个操作数都是整型,结果值为整型除求余%运算外,浮点数可以进行各种算术运算运算运算例子例子结果结果+2.0+.33;5.1+10.0;-13.6 4.2;4.0 7.0;*3.0*4.4;7.5*11.0;/8.6/2.0;5.0/4.0;-11.0/4.0;6.0/0.0;sizeofsizeof(3.1415)sizeof(double)溢出,没有值定义溢出,没有值定义当双目运算符的两个操作数都是整型,结果值为整型单目算术运算 右结合单目负号操作符例如:-23-12.3单目正号操作符例如:+244+0.618运算符意义与上下文
9、相关2运算符的多义性int a=35;int&ra=a;int *p=&a;a=ra*4;*p=5*p;例:int a=35;int&ra=a;int *p=&a;a=ra*4;*p=5*p;引用说明符引用说明符int a=35;int&ra=a;int *p=&a;a=ra*4;*p=5*p;取址运算取址运算int a=35;int&ra=a;int *p=&a;a=ra*4;*p=5*p;指针说明符指针说明符int a=35;int&ra=a;int *p=&a;a=ra*4;*p=5*p;算术乘算术乘int a=35;int&ra=a;int *p=&a;a=ra*4;*p=5*p;间址
10、访问间址访问int a=35;int&ra=a;int *p=&a;a=ra*4;*p=5*p;*p=5*(*p)int a=35;int&ra=a;int *p=&a;a=ra*4;*p=5*p;名词,类型说明符名词,类型说明符int a=35;int&ra=a;int *p=&a;a=ra*4;*p=5*p;动词,运算符动词,运算符3自增和自减 程序设计中,常对变量进行如下操作:程序设计中,常对变量进行如下操作:i=i+1i=i+1 i=i-1 i=i-1此时,此时,变量变量 i i 称为称为计数器计数器i0+1程序设计中,常对变量进行如下操作:程序设计中,常对变量进行如下操作:i=i+1
11、i=i+1 i=i-1 i=i-1此时,此时,变量变量 i i 称为称为计数器计数器i1 1+1 13自增和自减 程序设计中,常对变量进行如下操作:程序设计中,常对变量进行如下操作:i=i+1i=i+1 i=i-1 i=i-1此时,此时,变量变量 i i 称为称为计数器计数器i1 1+1 13自增和自减 程序设计中,常对变量进行如下操作:程序设计中,常对变量进行如下操作:i=i+1i=i+1 i=i-1 i=i-1此时,此时,变量变量 i i 称为称为计数器计数器i2 2+1 13自增和自减 程序设计中,常对变量进行如下操作:程序设计中,常对变量进行如下操作:i=i+1i=i+1 i=i-1
12、i=i-1此时,此时,变量变量 i i 称为称为计数器计数器C+为其提供自增和自减算符为其提供自增和自减算符3自增和自减 注:注:自增、自减算符的运算对象只能是整型变量,不能为常量或表达式;自增、自减算符的运算对象只能是整型变量,不能为常量或表达式;例:例:5+(a+)(x+y)-错误错误3自增和自减 注:注:自增、自减算符的运算对象只能是整型变量,不能为常量或表达式;自增、自减算符的运算对象只能是整型变量,不能为常量或表达式;例:例:5+(a+)(x+y)-错误错误不是整型变量不是整型变量3自增和自减 注:注:自增、自减算符的运算对象只能是整型变量,不能为常量或表达式;自增、自减算符的运算对
13、象只能是整型变量,不能为常量或表达式;例:例:5+(a+)(x+y)-错误错误 自增式和自减式作为独立的表达式,前缀式和后缀式没有区别;自增式和自减式作为独立的表达式,前缀式和后缀式没有区别;但作为表达式右值时:但作为表达式右值时:(1 1)前缀式)前缀式 先增值后引用先增值后引用例:例:x=+i 相当于相当于i=i+1;x=i;(2 2)后缀式后缀式 先引用后增值先引用后增值例:例:x=i+相当于相当于 x=i;i=i+1;3自增和自减 例:例:int a=3;int b=+a;/相当于相当于 a=a+1;b=a;int c=a+;/相当于相当于 c=a;a=a+1;b=a-;/相当于相当于
14、 b=a;a=a-1;c=-a;/相当于相当于 a=a-1;c=a;+(a+);/错错(a+)不是变量名不是变量名c=a+b;/错错 a+无法对无法对 b 操作操作c=a+b;/相当于相当于 c=a+b;a=a+1;c=a+b;/(a+)+b 错错注意:注意:编译扫描器优先向左识别运算符编译扫描器优先向左识别运算符3自增和自减 /例例#includeusing namespace std;int main()int a=3,b,c;b=+a;cout a=a t b=b endl;c=a+;cout a=a t c=c endl;b=-a;cout a=a t b=b endl;c=a-;co
15、ut a=a t c=c endl;c=a+b;cout a=a t c=c endl;3自增和自减 /例例#includeusing namespace std;int main()int a=3,b,c;b=+a;cout a=a t b=b endl;c=a+;cout a=a t c=c endl;b=-a;cout a=a t b=b endl;c=a-;cout a=a t c=c endl;c=a+b;cout a=a t c=c endl;a=a+1,b=a;/例例#includeusing namespace std;int main()int a=3,b,c;b=+a;co
16、ut a=a t b=b endl;c=a+;cout a=a t c=c endl;b=-a;cout a=a t b=b endl;c=a-;cout a=a t c=c endl;c=a+b;cout a=a t c=c endl;c=a,a=a+1;/例例#includeusing namespace std;int main()int a=3,b,c;b=+a;cout a=a t b=b endl;c=a+;cout a=a t c=c endl;b=-a;cout a=a t b=b endl;c=a-;cout a=a t c=c endl;c=a+b;cout a=a t c
17、=c endl;a=a-1,b=a;/例例#includeusing namespace std;int main()int a=3,b,c;b=+a;cout a=a t b=b endl;c=a+;cout a=a t c=c endl;b=-a;cout a=a t b=b endl;c=a-;cout a=a t c=c endl;c=a+b;cout a=a t c=c endl;c=a,a=a-1;/例例#includeusing namespace std;int main()int a=3,b,c;b=+a;cout a=a t b=b endl;c=a+;cout a=a t
18、 c=c endl;b=-a;cout a=a t b=b endl;c=a-;cout a=a t c=c endl;c=a+b;cout a=a t c=c endl;c=a+b,a=a+1;指针变量?间址访问?int a=10;int*pa=&a;a=*p+1;引用?int&ra=a;复 习指向指针的指针int*p2;指向常量的指针const类型*指针指针常量类型*const指针指向常量的指针常量const类型*const指针类型转换inta=100;unsignedinti=99;couti-a 大于大于=大于等于大于等于 小于小于=3 =5z=0 =x+1 0值为值为 1(true)
19、A 100值为值为 0(false)1.关系运算关系运算注意关系运算的正确使用:注意关系运算的正确使用:实数比较的误差实数比较的误差 例:例:1.2345678901234567897=1.2345678901234567898 值为值为 1(true)这是数据有效位数引起的误差。这是数据有效位数引起的误差。讨论:讨论:实数比较宜采用求误差值形式:实数比较宜采用求误差值形式:fabs(x-y)例如:例如:fabs(x-y)5&!(87)|2=101.5.4 赋值表达式赋值表达式赋值表达式的作用是把数据值写入变量,修改对象的值赋值表达式的作用是把数据值写入变量,修改对象的值 一般形式为:一般形式
20、为:变量变量 =表达式表达式 赋值表达式的作用是把数据值写入变量,修改对象的值赋值表达式的作用是把数据值写入变量,修改对象的值 一般形式为:一般形式为:变量变量 =表达式表达式 赋值运算符赋值运算符例如例如int Score1=90;int Score2=75;int Temp=Score2;Score2=Score1;Score1=Temp;1.5.4 赋值表达式赋值表达式赋值表达式的作用是把数据值写入变量,修改对象的值赋值表达式的作用是把数据值写入变量,修改对象的值 一般形式为:一般形式为:变量变量 =表达式表达式 例如例如int Score1=90;int Score2=75;int T
21、emp=Score2;Score2=Score1;Score1=Temp;9075Score1Score2Temp1.5.4 赋值表达式赋值表达式 赋值表达式的作用是把数据值写入变量,修改对象的值赋值表达式的作用是把数据值写入变量,修改对象的值 一般形式为:一般形式为:变量变量 =表达式表达式 例如例如int Score1=90;int Score2=75;int Temp=Score2;Score2=Score1;Score1=Temp;9075Score1Score2Temp751.5.4 赋值表达式赋值表达式赋值表达式的作用是把数据值写入变量,修改对象的值赋值表达式的作用是把数据值写入变
22、量,修改对象的值 一般形式为:一般形式为:变量变量 =表达式表达式 例如例如int Score1=90;int Score2=75;int Temp=Score2;Score2=Score1;Score1=Temp;9075Score1Score2Temp75901.5.4 赋值表达式赋值表达式赋值表达式的作用是把数据值写入变量,修改对象的值赋值表达式的作用是把数据值写入变量,修改对象的值 一般形式为:一般形式为:变量变量 =表达式表达式 例如例如int Score1=90;int Score2=75;int Temp=Score2;Score2=Score1;Score1=Temp;9090
23、Score1Score2Temp75751.5.4 赋值表达式赋值表达式赋值运算的强制类型转换赋值运算的强制类型转换 例如例如int x=0;x=2.3;cout x=x;x=21.5.4 赋值表达式赋值表达式赋值运算的优先级和关联性赋值运算的优先级和关联性 赋值运算的优先级很低赋值运算的优先级很低 赋值运算的右结合赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值赋值表达式称为左值表达式,允许关联赋值例如例如x=y=z+2;x=y=(z+2);x=(y=z+2);(x=y)=z+2;z+2=x=y;1.5.4 赋值表达式赋值表达式赋值运算的优先级和关联性赋值运算的优先级和关联性 赋值运
24、算的优先级很低赋值运算的优先级很低 赋值运算的右结合赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值赋值表达式称为左值表达式,允许关联赋值例如例如x=y=z+2;x=y=(z+2);x=(y=z+2);(x=y)=z+2;z+2=x=y;(1)计值)计值1.5.4 赋值表达式赋值表达式赋值运算的优先级和关联性赋值运算的优先级和关联性 赋值运算的优先级很低赋值运算的优先级很低 赋值运算的右结合赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值赋值表达式称为左值表达式,允许关联赋值例如例如x=y=z+2;x=y=(z+2);x=(y=z+2);(x=y)=z+2;z+2=x=y;(2
25、)把)把 z+2 的值写入的值写入 y1.5.4 赋值表达式赋值表达式赋值运算的优先级和关联性赋值运算的优先级和关联性 赋值运算的优先级很低赋值运算的优先级很低 赋值运算的右结合赋值运算的右结合 赋值表达式称为左值表达式,允许关联赋值赋值表达式称为左值表达式,允许关联赋值例如例如x=y=z+2;x=y=(z+2);x=(y=z+2);(x=y)=z+2;z+2=x=y;(3)把)把 y 的值写入的值写入 x1.5.4 赋值表达式赋值表达式赋值运算的优先级和关联性赋值运算的优先级和关联性 赋值运算的优先级很低赋值运算的优先级很低 赋值运算的右结合赋值运算的右结合 赋值表达式称为左值表达式,允许关
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3讲 运算符与表达式 运算 表达式
限制150内