1、概念
简单而言,左值就是能够出现在赋值符号左边或右边的东西,右值就是只能够出现在赋值符号右边的东西。
更深一层来说,左值就是L_value,L表示的是定位,地址;右值就是R_value,R表示的是读取数据。
例如,a=b,这句话中a是一个左值,b是一个右值,那么可以说,将b地址内存里面的数据放到a地址内存中。
2、合法的表达式
表达式是指由单个或多个操作数、运算符组成的符合C语言规则的式子。
左值可以是一个变量,或者是一个引用对象的特殊的表达式。
右值可以是一个常量,字面值常量,表达式。
通过几个例子大家看一下:
a=3 正确的表达式
-i++错误的表达式(-i不是一个左值,没有办法寻址)
3=x错误的表达式
'a'+=5错误的表达式,原因在于,字符型字面值不可以作为左值。
3、特殊情况
这些运算符的操作数必须是左值:&;++;--;=;+=;-=;*=;%=;/=;<<=;>>=;&=;^=;|=;