欢迎来到天天文库
浏览记录
ID:38743315
大小:396.31 KB
页数:61页
时间:2019-06-18
《运算符与表达式2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、运算符与表达式主要内容算术运算赋值运算逗号运算关系运算逻辑运算条件运算求字节数运算位运算一、算术运算算术运算——对数值量所进行的计算。通过算术表达式来实现。(一)算术运算符二元运算符一元运算符二元运算符必须连接两个运算量。+加求和-减求差*乘求积/除求商%求余数(取模)注意:只能求两个整数的余数,其符号与被除数的符号相同。如:8%3=2,-8%3=-2,8%(-3)=2C语言中不含乘方运算符。如:x2x*xx3x*x*x一元运算符只连接一个运算量。+正值-负值++加1(自增)运算(使变量值增加1)--减1(自减)运算(使变量值减少1)如:++ii=i+1--i
2、i=i-1说明:++或--可写于变量之前或之后,称之为前缀或后缀。区别在于后缀表示先取值后计算,前缀表示先计算后取值。如:n++先取n值,再令n=n+1++n先令n=n+1,再取n值n--先取n值,再令n=n-1--n先令n=n-1,再取n值单独对一个变量进行前缀或后缀运算并形成一条语句时,该变量的运算结果是相同的。如:I=5时,执行“I++;”或“++I;”后,I值均为6。对变量进行前缀或后缀运算并让其出现在表达式中,则前缀运算为先变化后取值(参加运算),后缀运算为先取值(参加运算)后变化。如:i=5;j=5;x1=++i;x1=6,i=6;x2=j+
3、+;x2=5,j=6[例]Li03001.c[例]Li03002.c[例]Li03003.c++或--只能对变量施加运算,而不能对常量或表达式施加运算。如:以下均为错误用法++(25),--(x+y),++i--(二)算术表达式算术表达式——用算术运算符连接数值型运算量而得到的式子。数量型运算量——char、int、float、double型的常量、变量或函数。1、算术运算符的优先级和结合性优先级——不同运算符同时出现在表达式中时进行运算的优先次序。结合性——同一优先级的运算符同时并连续出现在同一表达式中时进行运算的顺序(从左到右或从右到左)。注意:用圆括号可提高某个运算
4、符的优先级或结合性。如:3*5/4%2((3*5)/4)%2-i++-(i++)(a+b)*(a-b)C语言允许多重圆括号嵌套使用,不能用方括号[]或花括号{}。2、算术表达式的类型与表达式值的类型相同。如果表达式只含有同类型的运算量,那么直接进行运算,其运算结果也是同类型的。如:3/2=1整型int3.0/2.0=1.5双精度型double如果表达式中含有不同类型的运算量,那么C语言编译系统将自动对其进行转换与运算。首先将char与shortint转换为int,float转换为double,然后在每一步运算中将精度较低的运算量转换为精度较高的类型,再与精度较高的运
5、算量进行运算,运算结果为精度较高的类型。(低精度)charshortintintunsignedintlongintfloatdoublelongdouble(高精度)3、强制类型转换格式:(类型关键字)(表达式)功能:强制将指定表达式的值的类型转换为指定的类型。说明:强制类型转换也是一种一元运算符,与其它一元运算符的优先级相同。如:若I为int型,则I/2为整数,(float)I/2为小数。若x为float型,则x%3为错,(int)x%3则对。注意:类型关键字必须用括号括起来。对一个表达式进行转换时,应用括号将其括起来。转换后只转变值的类型而不改变原变量或
6、表达式的类型。float或double转换为int时,对小数部分是四舍五入还是简单截断取决于具体系统。在TC、VC中,采用截断小数的办法。[例]Li03004.c二、赋值运算(一)赋值运算符简单赋值运算符=复合赋值运算符算术运算:+=,-=,*=,/=,%=位操作:<<=,>>=,&=,
7、=,^=优先级与结合性所有的赋值运算符都处于同一个优先级,且优先级很低(仅高于逗号运算符而低于其它所有的运算符),结合性为从右到左。赋值运算符为二元运算符,需要连接两个运算量,且左边必须是变量或数组元素,右边则是一个表达式。如:x=ex+=ex=x+ex-=ex=x-ex*=e
8、x=x*ex/=ex=x/ex%=ex=x%e注意:使用复合赋值运算符时,右边的运算量应视为一个整体。如:x*=y+5x=x*(y+5)(二)赋值表达式用赋值运算符将一个变量(左边)与一个表达式(右边)连接起来,即构成一个赋值表达式。v=e对赋值表达式来说,左边变量的值就是该赋值表达式的值,该变量的类型就是该赋值表达式的类型。在赋值表达式中,当左边变量v与右边表达式e的数据类型不一致时,C语言编译系统将自动将e的类型转换为与v相同的类型后再赋值。转换规则:低精度高精度高精度低精度赋值表达式可以出现在
此文档下载收益归作者所有