华中科技大学光电子学院C语言第二章

华中科技大学光电子学院C语言第二章

ID:37732509

大小:207.26 KB

页数:20页

时间:2019-05-29

华中科技大学光电子学院C语言第二章_第1页
华中科技大学光电子学院C语言第二章_第2页
华中科技大学光电子学院C语言第二章_第3页
华中科技大学光电子学院C语言第二章_第4页
华中科技大学光电子学院C语言第二章_第5页
资源描述:

《华中科技大学光电子学院C语言第二章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第二章运算符与表达式§1表达式三个问题:1.运算符运算次序(求值)2.表达式的书写3.表达式的类型转换C语言是一种表达式语言,任何表达式后跟“;”都是语句.一.表达式表达式是由运算对象(常量,变量,函数)与运算符组成的有意义的式子。例:代数式表达式(a+b)/(c–e/(4*f))sqrt(x)+sin(41*3.14159/180)pow(y,1/5)+log(3*x)(c<=1)&&(c>=0)注:1.一个表达式书写只能占一行。层次性通过加圆括号体现。2.任何表达式计算的结果只能是一个值,且其值的类型就是表达式的类型。3.常量,变量,有返回值的函数调用等都可视为

2、简单表达式。表达式的分类(按运算符分类)算术表达式关系表达式逻辑表达式赋值表达式条件表达式逗号表达式位运算表达式表达式的求值由运算符的功能和运算符优先级与结合性决定的。二.运算符与优先级及结合性算术运算符:+,–,*,/,%,++,––关系运算符:>,<,>=,<=,!=,==逻辑运算符:!(非),&&(与),

3、

4、(或)赋值运算符:=复合赋值运算符:+=,–=,*=,/=,%=,^=,&=,…..条件运算符:?:逗号运算符:,位运算符:^(按位加),

5、(按位或),》(右移),《(左移),&(按位与),~(求反)2运算符的优先级与结合性(p26)§2.运算符及运算一.

6、算术运算1.运算符;+,–,*,/,%单目运算符:–(求负),+(正号)%(求余):只用于整型数运算,且余数的符号取自被除数,结果类型为整型例:–7%4=–3,7%–4=3结果为整形/(求商):用于整,实数的运算,结果类型分别为整型和双精度浮点型例:5/3=1(整除),5.0/2=2.5(实数除,双精度浮点型double)例:inta=2,b=–3,c=7,d=–19;–d%c–b/a*5+5/*表达式结果类型为整型值为15*/2.混合类型数据运算的类型转换规则。1)自动转换规则(隐式转换)一般转换原则,值域窄的类型向值域宽的类型转换char/short–>int–

7、>unsigned–>long–>unsignedlong–>float–>double–>longdouble例:inti;charc;longp;doubled;shorts;floatf;unsignedu;c–s/i/*表达式类型为int*/u*3–i/*表达式类型为unsigned*/u*3.0–i/*表达式类型为double*/f*3–i/*表达式类型为float*/c+1/*表达式类型为int*/3*s*p/*表达式类型为long*/赋值号两边类型不同时,将右边的类型转换成左边类型(不受上面规则的约束)右边类型 左边类型floatint截去小数部分  

8、 (降格)doublefloat四舍五入    (降格)intfloat小数部分均为0  (降格)intchar丢掉高出位    (降格)longint丢掉高出位(与机器有关)(降格)2)强制类型(显式)转换一般形式:(类型名)(表达式)例:(char)(3-3.14*x)/*表达式类型为char*/(float)i+3/*表达式类型为float原i类型不变*/注:被强制转换的变量类型不发生变化二.赋值运算及复合赋值运算赋值运算符: =复合赋值运算符:+=,-=,*=,/=,%=,>>=,&=,^=,

9、=,<<=注:二目运算符,从右向左结合赋值运算:形式: 左值表达

10、式 = 表达式例:intx;x=0;/*赋值语句x单元中为0 */x=x+1/*赋值语句 x单元中为1 */语义:将赋值号右边表达式的值计算出来并赋给左边的左值表达式所代表的单元中如:X=X+1;x+1=0;(错误)用X单元地址用X单元中的值算术表达式注:赋值号的左边左值表达式可以是度量名,下标表达式,指针变量名和访问表达式,结构成员选择表达式和结构变量名。.赋值表达式的类型与左值表达式的类型相同.如:i=j=0;i=(j=0);多重赋值表达式但:inti=j=0;(错误)多重赋值表达式不能出现在说明部分。·复合赋值运算形式:左值表达式op=表达式;其中:op为+,

11、-,*,/,%,>>,<<,&,|展开式:左值表达式=左值表达式op(表达式)例:k+=2=〉k=k+2k*=3+x=〉k=k*(3+x)≠k=k*3+x注:1.如果赋值号左边只能是变量或用表达式表示的变量(左值表达式)即用表达式表示的单元地址,而不能出现结果为算术类型的表达式如:1+3*n+=7/5(错误)=〉1+3*n=1+3*n+7/5但:1+3*(n+=7)/5(正确)*p=10(正确)2.复合赋值表达式的语义与展开式语义不一定等价:如:a[++i]+=3与展开式:a[++i]=a[++i]+3语义不同前一个i增1,后面的i增2就是说:赋值号左部是个左值

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。