c 的左值與右值概念詳解

2021-10-07 01:53:56 字數 870 閱讀 7374

了解計算機儲存結構

cpu: 是大腦執行二進位制指令 cpu中含有暫存器,該暫存器沒有位址,用於臨時儲存記憶體中的資料,一般情況下32位有8個暫存器,64位有16個暫存器,暫存器的特點訪問速度非常快,容量非常小

pam :訪問速度快,容量一般,一但掉電資料就沒了

磁碟 :訪問速度慢容量巨大,永久性儲存資料,同時是訪i/o的短板

左值和右值的概念

按字面意思,通俗地說。以賦值符號 = 為界,= 左邊的就是左值(lvalue),= 右邊就是右值(rvalue)。

int a = 666;

左值 右值

int     b   =  888;

左值 右值

int c = a + b;

左值 右值 右值

當計算機執行int c = a+b時 變數a和b的值會導到暫存器,cpu進行計算,並把計算得到的值複製給在記憶體中占有確定位置的變數c(因此多執行緒同時對乙個變數數值進行++操作,得到的數值,與單執行緒不同)

lvalue - 代表乙個在記憶體中占有確定位置的物件(換句話說就是有乙個位址)。

rvalue - 通過排他性來定義,每個表示式不是lvalue就是rvalue。因此從上面的

lvalue的定義,rvalue不在記憶體中占有確定位置的表示式,而是存在在暫存器中。

所有的左值(無論是陣列,函式或不完全型別)都可以轉換成右值

C 左值和右值概念

本文主要就c 中左值和右值的一些概念進行討論。如果文中有錯誤或遺漏之處,敬請指出,謝謝!讓我們先看看一些常見的左值和右值舉例 int var 6 var is a lvalue const int var 6 var is a nonmodifiable lvalue hello,world the...

c 左值與右值

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

C 左值與右值

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