《c语言运算符和表达式.docx》由会员分享,可在线阅读,更多相关《c语言运算符和表达式.docx(4页珍藏版)》请在优知文库上搜索。
1、C语言运算符和表达式C语言把除了控制语句和输入输出以外几乎所有的基本操作都作为运算符处理。1自增(+)、自减(-一)运算符:自增(+)、自减(一)运算符的作用是使变量的值加1或减1,例如,+ii(在使用之前,先使的值加(减)1)i+,i-(在使用i之后,使i的值加(减)1)y+i和i+的不同之处在于:+i是先执行i=i+1,再使用i的值;而i+是先使用i的值,再执行i=i+l自增(减)运算符常用于循环语句中,使循环变量自动加1;也用于指针变量,使指针指向下一个地址。2算术表达式和运算符的优先级与结合性用算术运算符和括号将运算对象连接起来的、符合C语法规则的式子称C算术表达式。运算对象包括常量、
2、变量、函数等。c语言规定了运算符的优先级(如先乘除后加减),还规定了运算符的结合性。在表达式求值时,先按运算符的优先级别顺序执行,如果在一个运算对象两侧的运算符的优先级别相同,C语言规定了各种运算符的结合方向(结合性),算术运算符的结合方向都是自左至右,即运算对象先与左面的运算符结合。算术运算符是自左至右(左结合性),赋值运算符是自右至左(右结合性)。赋值运算符和赋值表达式赋值运算符就是二,表示存储,即把赋值号右边表达式的值存给左边的变量。可以出现在赋值号左边的式子,称为左值(Ieftvalue)o左值必须有内存空间且允许赋值。常用的左值是变量,但常变量不能作为左值。赋值运算符的结合性,从右至
3、左。若有两个赋值号,要先执行右边的。如:a=b=2相当于是a=(b=2).3不同类型数据间的混合运算在程序中经常会遇到不同类型的数据进行运算,如果一个运算符两侧的看据类型不同,则先自动进行类型转换,使二者成为同一种类型,然后进行运算。整型、实型,字符型数据间可以进行混合运算。规律为1)十、-/运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算。2)如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型。3)字符(cha
4、r)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。如果字符型数据与实型数据进行运算,则将字符的ASCII代码转换为double型数据,然后进行运算。4强制类型转换运算符可以利用强制类型转换运算符将一个表达式转换成所需类型。例如:(double)a(将a转换成double型)(int)(x+y)(将X+V的值转换成int型)(float)(5%3)(将5%3的值转换成float型)其一般形式为要转换类型的表达式应该用括号括起来。如果写成(int)x+y,则只将X转换成整型,然后与V相加。需要说明的是,在强制类型转换时,得到一个所需类型的中间数据,而原来变量的类和未发生变
5、化。例如:a=(int)X如果已定义X为float型变量,a为整型变量,进行强制类型运算(int)X后得到一个int类的临时值,它的值等于x的整数部分,把它赋给a,注意X的值和类型都未变化,仍为float型。该临时值在赋值后就不再存在了O有两种类型转换。一种是在运算时不必用户干预,系统自动进行的类型转换,如3+6.5。另一种是强制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换。如运算符要求其两侧均为整型量,若X为float型,则X%3不合法,必须用(int)X%3o强制类型转换运算优先于运算,因此先进行(int)X的运算,得到一个整型的中间变量,然后再对3求余。算术运算符算术运算符有7个:+(正号),-(负号),*(乘号)在C语言中*不可以省略,/(除),%(求余)要求参与运算的都是整数,+(加),-(减)。求余运算的结果,结果的符号应与前面那个数的符号相同,例如5%-3=+2,而-5%3=2算术运算符的目数7个运算符中,+(正号),(负号)都是单目运算符,剩下的5个都是双目运算符,单目运算符是指它只需要一个运算量(即操作数),比如-5,只需要在负号后写一个数,前边不需要,故是单目运算符。而双目运算符则需要两个运算符,例如abo加号前各需要一个运算量。此外,在函数调用时,有时为了使实参与形参类型一致,可以用强制类型转换运算符得到一个所需类的参数。