就业数据资源平台
当前位置:首页 > MS Office应用
程序员之程序设计知识点五

.赋值运算符

  赋值运算的最简单形式是


  变量=表达式


  其中“=”是赋值运算符。赋值运算的执行过程是:


  (l)先计算赋值运算符右端的表达式;


  (2)如表达式的类型与赋值运算符左边的变量类型不同(仅限于基本类型),将表达式值的类型自动转换成变量的类型;


  (3)将求得的值赋给变量,即存储到由变量所占的内存中。


  简单地说,计算表达式的值,将该值赋给变量。


  赋值运算也有结果,经赋值运算后,赋值表达式具有赋值后赋位运算符左边变量同样的类型和值。因赋位运算有值,所以可以进一步参与运算,特别是可以再赋植给其它变量。赋值运算符的结合性是‘边有至左”的,当连续有多个赋值运算时,则从右至左逐个赋值。如有变量定义:


  int k; double x;


  则赋值表达式:


  x= k= 3.5


  是先将实数3.5自动转换成整数3赋给整型变量k,然后又将整数3自动转换成实数3.0赋给实型变量x。所以,k的值是3,x的值是3.0。


  在程序中,经常遇到在变量当前值的基础上作某种修正的运算。如


  x=x+5.0


  这类运算的特点是:变量既是运算对象,又是赋值对象。为避免对同一存储对象的地址重复计算,c语言弓队复合赋值运算符。它们是


  +=、-=、*=、%=、〈〈=、〉〉= 、&= 、^=、|=


  通常,记日为某个双目运算符,复合赋值运算


  xθ=e


  其等效的表达式为


  x= xθ(e)


  注意,当e是一个复杂表达式时,等效表达式的括号是必需的。如


  y*= a+b


  的等效表达式是y= y*(a+b)


  赋值运算符和所有复合赋值运算符的优先级全相同,并且都是“自右至左”结合,它们的优先级高于远号运算符的优先级,低于其它所有运算符的优先级。


  5.逗号运算符


  逗号运算符“,”用于将若干表达式连接起来顺序地逐个计算。连续返号运算的一般形式为:


  表达式1,表达式2,…,表达式n


  它的计算顺序是从左到右逐一计算各表达式,并以表达式n的值为连续逗号运算的结果。例如,表达式


  x=( i=3, i*2)


  使i等于3,x等于6。其实,逗号运算只是把多个表达式串联起来,在许多情况下,使用逗号运算的目的只是想分别计算各个表达式的值,而并非想使用逗号运算中最后那个表达式的值。逗号运算最常用于for结构中,用于给多个变量登初值,或用于对多个变量的值逐一修改等。逗号运算符的优先级最低,其结合性是“自左向右”的。


  6.条件运算符


  条件运算是一个三目运算,有三个运算对象。条件运算的一般形式为


  表达式1?表达式2:表达式3


  条件运算的计算规则是:


  (1)计算表达式1的值;


  (2)如果表达式1的值非0(真),则计算表达式2,并以表达式2的值为条件运算的结果(不再计算表达式3);


  (3)如果表达式1的值为0(假),则计算表达式3,并以表达式3的值为条件运算的结果(不再计算表达式2)。


  例如,表达式


  x>y?x:y


  如果x>y条件为真,则条件运算取x值,否则取y值。


  条件运算符(?:)的优先级高于赋值运算符,低于逻辑运算符,也低于关系运算符和算术运算符。例如,表达式


  max= x> y?x: y+ l


  等效于表达式


  max=((x>y) ?x:( y+l))


  条件运算符的结合性为“自右至左”。例如,表达式x>y?x:u>v?u:v


  等效于表达式


  x>y?x:(u>v?u:v)

就业数据资源平台