鍍金池/ 問答/Java  C  HTML/ 如何理解左值

如何理解左值

犀牛書第六版P67頁關(guān)于左值有這樣一句描述:表達(dá)式只能出現(xiàn)在賦值運(yùn)算符的左側(cè)
然后舉出例子在javascript中,變量、對象屬性和數(shù)組元素均是左值
但是例子中的幾個值均可以放在表達(dá)式右邊
于是去查百度,百度中關(guān)于左值的描述定義如下:左”(left)的原意是指可以放在賦值符號“=”的左邊,但其實(shí)也表示能作為&和++等操作符的操作數(shù)
在描述上的區(qū)別就是左值是可以在表達(dá)式左邊還是只能在表達(dá)式左邊呢?
希望其他非前端開發(fā)人員也能給出關(guān)于這個概念的見解,不勝感激

回答
編輯回答
妖妖

int a;
舉幾個例子吧

  1. a = 5; //把(int)5存入a所具有的地址
  2. int *pa = &a;//取a地址
  3. int& foo(int &a) {...return a;} //一個返回引用的函數(shù)
    int *pa2 = &foo(a); //取返回對象(a)的地址

以上代碼都以變量a舉例。
當(dāng)一個對象被用作右值時,用的是其中的值(內(nèi)容);
當(dāng)一個對象被用作左值時,用的是它的地址(身份)。
(可以說左值對象都擁有其所支配的一片內(nèi)存)

ps.想要深入了解可以去看看C++11的右值引用和std::move()

2017年2月28日 14:32
編輯回答
大濕胸

即可以放在左面又可以放在右面 那算是語言的語法糖。因?yàn)榉旁谧笥业暮x是不一樣的,在左邊是它的地址,在右邊是它的值

2017年9月4日 14:54
編輯回答
陌璃

如果不想像C++中那么詳盡。
你就簡單理解為等號左邊用到的是它的左值,在右邊用到的就是它的右值。然后就是臨時對象等不讓你使用它的左值。

2017年3月14日 23:14
編輯回答
兔寶寶

我猜是翻譯錯了?
左值:表達(dá)式中只能出現(xiàn)在賦值運(yùn)算符左側(cè)的東西

2017年5月7日 19:33