在c++中,可以取位址的,有名字的表示式成為左值,不能取位址的,沒有名字的就是右值。例如
int i = 1;
其中,i是左值,而1是右值。
對於常量物件,
const int ci = 10;
雖然不能將ci放在賦值語句的左邊,但是能夠對ci取位址,所以常量物件ci是左值。
獲取物件位址的符號是&,則&i表示變數i的位址,因為無法對&i進行取位址操作,所以&i是乙個右值。
當乙個物件被用作右值時,用的是物件的內容;當物件被用作左值時,用的是物件在記憶體中的位置。
在「1 基本概念」中提到
int i = 1;
其中,i是左值,而1是右值,該行**對應的彙編**為
mov dword ptr [i],1
以上**表示將值1儲存到變數i的位址中,i是左值用的是位址,而1是右值用的是數值。 C 中的左值和右值
1.概念變數和文字常量都有儲存區,並且有相關的型別,區別在於變數是可定址的 對於每個變數,都有2個值與其相關聯 1 資料值,儲存在某個記憶體位址中,也稱右值 rvalue 右值是被讀取的值 read value 文字常量和變數都可被用於右值。2 位址值,即儲存資料值的那塊記憶體位址,也稱左值 lva...
c 中的左值和右值
左值 lvalue 右值 rvalue 是 c c 中乙個比較晦澀的概念,有的人可能甚至沒有聽過,但這個概念到了 c 11 後卻變得十分重要,它們是理解move forward 等新語義的基礎。左值與右值這兩概念是從c中傳承而來的,在c中,左值指的是能夠出現在等號左邊及右邊的變數 表示式 右值則指的...
C 中的左值和右值
左值 lvalue 應該被解釋被location value,即可被定址的值 右值 rvalue 應該被解釋為read value,即唯讀的值,而不能被定址 這樣理解應該更為準確一點 通俗的講,左值就是能夠出現在賦值符號左面的東西,而右值就是那些可以出現在賦值符號右面的東西了。舉個很簡單的例子 a ...