從頭認識C 左值和右值

2021-06-27 07:12:45 字數 568 閱讀 2648

c/c++語言中可以放在賦值符號左邊的變數,即具有對應的可以由使用者訪問的儲存單元,並且能夠由使用者去改變其值的量。左值表示儲存在計算機記憶體的物件,而不是常量或計算的結果。或者說左值是代表乙個記憶體位址值,並且通過這個記憶體位址,就可以對記憶體進行讀並且寫(主要是能寫)操作;這也就是為什麼左值可以被賦值的原因了。相對應的還有右值:當乙個符號或者常量放在操作符右邊的時候,計算機就讀取他們的「右值」,也就是其代表的真實值。簡單來說就是,左值相當於位址值,右值相當於資料值。右值指的是引用了乙個儲存在某個記憶體位址裡的資料。

左值和右值是相對於賦值表示式而言的。左值是能出現在賦值表示式左邊的表示式。左值表示式可以分為可讀寫的左值和唯讀左值。右值是可以出現在賦值表示式右邊的表示式,他可以是不佔據記憶體空間的臨時量或字面量,可以是不具有寫入權的空間實體。

int a=3;

const int b=5;

a=b+2; //a是左值,b+2是右值

b=a+2; //錯!b是唯讀的左值但無寫入權,不能出現在賦值符號左邊

(a=4)+=28; //a=4是左值表示式,28是右值,+=為賦值操作符

34=a+2; //錯!34是字面量不能做左值

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

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

C 左值和右值

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

C 左值和右值

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