概念

最早起源于CPL语言(1960s)。

表达式的二个属性(类型,值类别)之一!

左值:可以寻址(Locate)的对象,根据是否可修改属性,分为可修改左值不可修改左值

右值:不是左值的对象(C/C++中,临时对象属于右值)

要点

  • 字符串常量是左值(不可修改的)!因为该数据存放在文本段,是有地址的!

  • 在C中,prefix increment(++)/decrement(–), assignment(=), compound assignment(+=…), comma(,), ternary conditional(? :)是右值!而在C++中却是左值!!!

参考

  1. http://eli.thegreenplace.net/2011/12/15/understanding-lvalues-and-rvalues-in-c-and-c
  2. http://en.cppreference.com/w/c/language/value_category
  3. http://en.cppreference.com/w/cpp/language/value_category
  4. http://en.cppreference.com/w/cpp/language/operator_other#Built-in_comma_operator

留言

2016-09-07