在介绍各种赋值操作符之前,我们先来介绍一下左值(lvalue)和右值(rvalue)的概念。左值能够出现在赋值语句的两边,而右值只能出现在赋值语句的右边。比如“a= b+c;”这个语句中的“b+c”就是一个右值,不能出现在左边写成“b+c=a;”。这是因为左值在内存中需要有一个确定的位置,赋值操作需要把右值计算出的结果存到这个位置。这样的话,接下来我们在类似“d=a+c”这样的语句中用到a的时候,也是从这样一个确定的位置中读取的。这就好像把“F=ma”这样的公式写成“ma=F”,会令人弄不清楚要求的到底是ma中的哪一个。
此外,因为赋值操作符的左边是左值,而左值也可以出现在赋值操作符的右边,所以“a=b=c+d”这种语句是合法的。这种语句可以看成是“b=c+d”这样一个赋值表达式的结果,也就是b赋值给a的嵌套赋值表达式,因此a和b同时得到了c+d的值。
提示
我们需要区分以下几种概念:“int a=b;”是一个带初始化的变量定义语句;“a=b;”是一个赋值语句;“c=a=b”中的“a=b”是一个赋值表达式,而“c=a=b”也是一个赋值表达式,其中“a=b”的返回值将会继续赋值给c。
表3.3.7 C++赋值操作符
(www.xing528.com)
表3.3.7列出的是赋值操作符,其中除了第一个基本的赋值操作符以外,其他的都是与各种操作符复合而成的复合赋值操作符。以“a+=b”作为例子,它其实是“a=a+b”的缩写,以此类推。而“a=a+1”就可以直接用“a++”或者“++a”来代替。下面我们来看一个示例:
动手写3.3.9
动手写3.3.9展示了复合赋值操作符的运算。运行结果如图3.3.9所示:
图3.3.9 复合赋值操作符示例运行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。