C 術語辨析 左值和右值

2021-08-07 13:03:21 字數 635 閱讀 9940

c++表示式中不是左值就是右值,所以能理解左值和右值這兩個概念對我們的程式設計還是挺有幫助的。

c++ primer中對左值和右值是這樣描述的:

所以從概念中我們可以看出:左值表示式表示的是物件的身份(在記憶體中的位置),右值表示式表示的是物件的值。

常見的運算子中返回值的型別:

int* p;

decltype(&p) a; // a 是 int** 型別

decltype(*p) b; // b 是 int& 型別

左值引用和右值引用(右值引用主要用於物件的移動操作):

int i = 5;

int &r = i; //正確,左值引用繫結到左值上

int &&rr = i; //錯誤,右值引用不能繫結到左值上

int &r2 = i * 5; //錯誤,左值引用不能繫結到右值上

const

int & r3 = i * 5; //正確,const左值引用可以繫結右值

int &&rr2 = i * 5; //正確,右值引用繫結右值

關於左值和右值暫時就寫這麼多了,以後遇到新的內容在補充。

C 左值和右值,左值引用和右值引用

c 對於左值和右值沒有標準定義,但是有乙個被廣泛認同的說法 可見立即數,函式返回的值等都是右值 而非匿名物件 包括變數 函式返回的引用,const物件等都是左值。從本質上理解,建立和銷毀由編譯器幕後控制,程式設計師只能確保在本行 有效的,就是右值 包括立即數 而使用者建立的,通過作用域規則可知其生存...

C 左值和右值

c 左值與右值概念 變數和文字常量都有儲存區,並且有相關的型別,區別在於變數是可定址的 1 資料值,儲存在某個記憶體位址中,也稱右值 rvalue 右值是被讀取的值 read value 文字常量和變數都可被用於右值。2 位址值,即儲存資料值的那塊記憶體位址,也稱左值 lvalue 文字常量不能被用...

C 左值和右值

左值 lvalue 和右值 rvalue 是 c c 中乙個比較晦澀基礎的概念,有的人可能甚至沒有聽過,但這個概念到了 c 11 後卻變得十分重要,它們是理解 move,forward 等新語義的基礎。左值與右值這兩概念是從 c 中傳承而來的,在 c 中,左值指的是既能夠出現在等號左邊也能出現在等號...