【C++】i++=5編譯報錯,i++不能作爲左值的原因

左值與右值

首先,我們需要明確左值與右值的定義。

一個簡單的理解就是,對於每個變量,均是可尋址的,均與兩個值有關:

  1. 它的數據值——存儲在某個內存空間中,不佔有確定位置的表達式,被稱爲右值(rvalue)。
  2. 它的地址值——存儲數據值的內存的地址,佔有確定的位置,被稱爲左值(lvalue)。

i++不能作爲左值的原因

int i = 0; i++=5;編譯報錯!

由於i++的內部實現是創建一個臨時變量並返回,返回值不是可尋址變量的引用,不具備地址值,因而無法對其進行左值操作。

int temp = i;
i = i + 1;
return temp;

int i = 0; ++i=5;編譯通過!i爲5!

這是因爲++i的內部實現是對變量i的運算,返回的是i的地址,可以作爲左值。

i = i + 1;
return i;

 

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