左值和右值的概念

出處:http://www.cppblog.com/cc/archive/2006/05/25/7619.html 稍作修改

 

我們經常可以看到關於 左值(L-value) 和 右值(R-value) 的概念,那麼到底什麼是左值,什麼是右值,它們之間的區別又是在哪裏呢?

首先,什麼事L-value,R-value?

L-value中的L指的是Location,表示可尋址。The "l" in lvalue can be though of as location
R-value中的R指的是Read,表示可讀。The "r" in rvalue can be thought of as "read" value.  

   

通俗的講,左值就是能夠出現在賦值符號左面的東西,而右值就是那些可以出現在賦值符號右面的東西了。

舉個很簡單的例子:

a=b+100;

那麼這裏a就是左值,b+25就是一個右值。左值和右值之間是不一定都能互換的,上面的這個例子就是不能互換的,如果寫成

b+100=a;

大家都能看出來這樣寫會不編譯通過的,因爲編譯器無法判斷b+100的內存地址,所以不能操作。

看了這個例子,可以做一個總結,左值必須應該是一個變量或者是表達式等,但是它的物理位置是可以確定的,而右值不一定,這也是它們兩者之間的區別。

關於左值是表達式的例子有數組,還有指針這些都可以。

int array[10];

int a=5;

array[a+3]=10; //這裏左值就是一個數組表達式了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章