左值和右值
我們?cè)诳磿臅r(shí)候,經(jīng)常可以看到關(guān)于 左值(L-value) 和 右值(R-value) 的概念,那么到底什么是左值,什么是右值,它們之間的區(qū)別又是在哪里呢?
通俗的講,左值就是能夠出現(xiàn)在賦值符號(hào)左面的東西,而右值就是那些可以出現(xiàn)在賦值符號(hào)右面的東西了。
舉個(gè)很簡(jiǎn)單的例子:
a=b+100;
那么這里a就是左值,b+25就是一個(gè)右值。左值和右值之間是不一定都能互換的,上面的這個(gè)例子就是不能互換的,如果寫成
b+100=a;
大家都能看出來(lái)這樣寫會(huì)不編譯通過(guò)的,因?yàn)榫幾g器無(wú)法判斷b+100的內(nèi)存地址,所以不能操作。
看了這個(gè)例子,可以做一個(gè)總結(jié),左值必須應(yīng)該是一個(gè)變量或者是表達(dá)式等,但是它的物理位置是可以確定的,而右值不一定,這也是它們兩者之間的區(qū)別。
關(guān)于左值是表達(dá)式的例子有數(shù)組,還有指針這些都可以。
int array[10];
int a=5;
array[a+3]=10; //這里左值就是一個(gè)數(shù)組表達(dá)式了
此文完。
另外:朋友給了一些其他方面的提示 (左值右值翻譯可能有些問(wèn)題)
錯(cuò)了,沒有什么左值和右值!
翻譯害人不淺,
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.