int hoge;
hoge = 10;
piyo = hoge * 10;
作为变量,他有”自身的值“使用和作为“自身的内存区域”使用两种情况。
此外在C中,即使不是变量名,表达式也是可以代表“某个变量的内存区域”。比如这种情况:
hoge_p = &hoge;
*hoge_p = 10;
像这样,表达式表示某处内存区域的时候,我们称当前的表达式为左值(lvalue);相对的,表达式只是代表值的时候,我们称当前的表达式为右值。
在标准委员会的定义,lvalue的l不是left的意思,而表示locator(指示位置的事物)。Rationle中有下面一段描述,
The Committee has adopted the dafinition of lvalue as an object lovator。
尽管如此,JIS X3010还是将lvalue解释成了“左值”。
中国国家标准GB/T 15272-94(189页)中,也是将lvalue解释成左值。