左值右值

來源:互聯網
上載者:User
左值和右值

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

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

舉個很簡單的例子:

a=b+100;

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

b+100=a;

大家都能看出來這樣寫會不編譯通過的,因為編譯器無法判斷b+100的記憶體位址,所以不能操作。

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

關於左值是運算式的例子有數組,還有指標這些都可以。

int array[10];

int a=5;

array[a+3]=10; //這裡左值就是一個數組運算式了

 那麼對於(a=2)=66這樣的運算式怎麼看?另外,為什麼自增(減)運算只能用於左值,不能用於右值,即運算式++(a++)為什麼錯誤呢?

a=2)=66 中就是按順序賦值就是了 所以a=66 

++(a++) 
至於右值為什麼不能用,因為後增量(後減量)返回的值是修改前的變數值,故不為左值,所以他就不能用了

a++相當於
int a;
{
int temp=a;
a=a+1;
teturn temp;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.