《(6.5)--第4课(2.2节-算术表达式、赋值表达式).ppt》由会员分享,可在线阅读,更多相关《(6.5)--第4课(2.2节-算术表达式、赋值表达式).ppt(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、算术运算符和表达式语法基础C C语言的运算符语言的运算符1算术运算符+-*/%+-2关系运算符 =!=3逻辑运算符!&|4位运算符|&5赋值运算符=及其扩展赋值运算符6条件运算符?:7逗号运算符,8指针运算符*&9求字节数运算符sizeof10强制类型转换运算符(类型)11成员运算符.-12下标运算符 13其他如函数调用运算符()常用的算术运算符常用的算术运算符运算符运算符含义含义举例举例结果结果加法运算符aba和b的和减法运算符a-ba和b的差*乘法运算符a*ba和b的乘积除法运算符aba除以b的商求余运算符aba除以b的余数两个实数相除的结果是双精度实数,两个整数相除的结果为整数%运算符要
2、求参加运算的运算对象(即操作数)为整数,结果也是整数如:如:1/2 0 18/4 4 算术表达式和运算符的优先级与结合性l用算术运算符和括号将运算对象(也称操作数)连接起来的式子称为算术表达式l运算对象包括常量、变量、函数等lC语言规定了运算符的优先级(例如先乘除后加减),还规定了运算符的结合性l在表达式求值时,先按运算符的优先级别顺序执行,当在一个运算对象两侧的运算符的优先级别相同时,则按规定的“结合方向”处理。语言规定了各种运算符的结合方向(结合性),“自左至右的结合方向”又称“左结合性”,即运算对象先与左面的运算符结合。相反“自右至左的结合方向”称为“右结合性不同类型数据间的混合运算如果
3、一个运算符两侧的数据类型不同,则先自动进行类型转换,使二者成为同一种类型,然后进行运算。整型、实型、字符型数据间可以进行混合运算。转换规则如下所示:double float double float 高高 long long unsigned unsigned int int char,short char,short 低低 int i=3,j;float f=2.5;double d=7.5;printf(%lf,10+a+i*f-d/3);程序分析程序分析 10+a+i*f-d/3 10+a+i*f-d/3由于“*”比“+”优先级高,先进行i*f的运算。先将i与f都转成double型,运算
4、结果为7.5,double型进行d/3的运算,先将3转换成double型,d/3结果为2.5,double型。进行10+a的运算,a的值是整数97,运算结果为107整数107与*的积相加。先将整数107转换成双精度数,相加结果为114.5,double型将10+a+i*f的结果114.5与d/3的商2.5相减,结果为112.0,double型float f;思考:思考:5*(f-32)/9 和 5/9*(f-32)等价吗?类型转换当自动类型转换不能实现目的时,可以用强制类型转换在运算时不必用户干预,系统自动进行的类型转换自动类型转换强制类型转换int a;float x,y;(double)a
5、 将转换成double型(int)(x+y)将x+y的值转换成int型(float)(5%3)将5%3的值转换成float型(int)x+y 只将x转换成整型,然后与y相加a=(int)x;进行强制类型运算(int)x后得到一个int类型的临时值,它的值等于的整数部分,把它赋给a,注意x的值和类型都未变化,仍为float型强制类型转换运算符(类型名)表达式自增(+)自减(-)运算符作用是使变量的值增或减前置运算:+i,-i在使用之前,先使的值加/减1后置运算:i+,i-在使用之后,使的值加/减1+i是先执行i=i+1,再使用i的值;而i+是先使用i的值,再执行i=i+1int i=3,j;j=
6、+i;/i的值先变成4,再赋给,j的值为int i=3,j;j=i+;/先将 i的值3赋给,的值为,然后变为int i=3;printf(“%d”,+i);/输出int i=3;printf(“%d”,i+);/输出3赋值运算与赋值表达式l赋值表达式赋值表达式:用=将一个变量和一个表达式连接起来的式子 变量 表达式l例如例如:f=100;f=100;c=5*(f-32)/9;c=5*(f-32)/9;计算赋值运算符右侧表达式的值将赋值运算符右侧表达式的值赋给左侧的变量复合的赋值运算符l在赋值符“”之前加上其他运算符,可以构成复合赋值运算符l语言规定可以使用10 种复合赋值运算符:,*,|l例如
7、例如:l 等价于 l*等价于 *()l 等价于 赋值运算符和赋值表达式 l左值左值 (Lvalue):Lvalue):赋值运算符左侧的标识符变量可以作为左值而表达式就不能作为左值(如a+b)常数、常变量也不能作为左值 l右值右值 (Rvalue):Rvalue):出现在赋值运算符右侧的表达式 可以是常数、表达式、变量、函数等赋值运算符和赋值表达式 l赋值表达式中的“表达式”,又可以是一个赋值表达式例如例如:a=(b=5)分析括弧内的“b=5”是一个赋值表达式,它的值等于5。执行表达式“a=(b=5)”相当于执行“b=5”和“ab”两个赋值表达式。赋值运算符按照“自右而左”的结合顺序,因此,“(b5)”外面的括弧可以不要,即“a=(b=5)”和“a=b=5”等价逗号运算符和逗号表达式l逗号运算符逗号运算符:将多个表达式连接起来,又称为“顺序求值运算符”如:如:5,l一般形式一般形式:表达式,表达式,表达式,表达式l求解过程求解过程:先求解表达式,再求解表达式,整个逗号表达式的值是表达式n 的值逗号运算符和逗号表达式逗号运算符是所有运算符中优先级别最低的例例:(,*)赋值表达式,将一个逗号表达式的值赋给,的值等于 谢谢西华大学