C 左值與右值

2021-10-21 13:56:10 字數 721 閱讀 3715

乙個很常見的誤區就是左值時等號左邊的值,右值時等號右邊的值

含義:①左值是指表示式結束後依然存在的持久化物件;右值是指表示式結束時就不再存在的臨時物件

②左值是儲存單元內的值,即是有實際儲存位址的;右值則不是儲存單元內的值,比如它可能是暫存器內的值也可能是立即數。

下圖取自乙個知乎的回答:

看幾個例子:

int a=1;

int b=2;

a和b 為右值

a+b 為左值

++a 為右值

a++ 為左值

string(「hello」) 為左值

c++11以後劃分的又更詳細了,分為左值(lvalue),純右值(prvalue)和將亡值(xvalue)

lvalue:左值,即傳統意義上的左值。

xvalue:將亡值,指通過「右值引用」產生的物件。 這裡x可以理解為即將消失(expiring),也可理解為中間(橫跨左值和右值)。

prvalue:純右值,即傳統意義上的右值。

參考資料:

c 左值與右值

在學c 過程中,左值與右值的概念是一道繞不過去的坎,因此就想寫一些自己的理解。左值 lvalue 與右值 rvalue 是c 語法中的術語 terms 第一次看到這兩個詞的時候,很自然就認為在乙個表示式中,在等號左邊的就是左值,在等號右邊的就是右值。如果你們第一次看到這兩個詞也這麼認為的話,那我要恭...

C 左值與右值

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

C 左值與右值

左值 lvalue 是有識別符號 可以取位址的表示式,最常見的情況有 變數 函式或資料成員的名字返回左值引用的表示式,如 x x 1 cout 字串字面量如 hello world 在函式呼叫時,左值可以繫結到左值引用的引數,如 t 乙個常量只能繫結到常左值引用,如 const t 反之,純右值 p...