C語言中的左值右值

2021-06-26 22:39:10 字數 603 閱讀 4642

一般說來出現在「=」左邊的是左值,出現在「=」右邊的是右值,左值是可改變的值,出現在賦值號左邊的符號所代表的位址上的內容一定是可以被修改的,唯讀變數是不能做左值的。++i

就可以作為左值,而 i++ 卻不能作為左值。這也是為什麼 ++++i 合法,而 i++++ 卻不合法。

變數 i

i為左值時:編譯器認為 i 代表的是 i 的位址,這個位址只有編譯器知道,在

編譯時確定;

i為右值時:編譯器認為 i 的含義是 i 所代表的位址裡的內容,這個內容是什麼,只有在

執行時知道。

陣列名 a

a 可以為右值。當 a 為右值時,其代表的含義是 &a[0],即

陣列的首元位址

,而不是

陣列的首位址

。儘管它們位址的數值是一樣的,但是代表的含義不一樣,比如自加的單位不同(前者與型別有關,而後者與型別和陣列大小都有關)。當然 a 僅僅是代表著陣列首元位址,並沒有真的儲存這個位址,也就是說編譯器沒有為陣列a來分配一塊記憶體來儲存這個位址,這與指標不同。

a不可以為左值!陣列分配的記憶體是乙個整體,我們無法把陣列當乙個整體來訪問,但是陣列的元素a[i]可以作為左值。只能通過訪問 a[i] 來達到訪問整個陣列的目的。

C語言中什麼叫做左值?右值?

左值就是在賦值中可以放在賦值操作符兩邊的值,比如 int a 1 double b 2.0 a b b a 這裡a和b都是左值,一切變數都是左值,但const變數是例外。p是乙個左值,和變數一樣,只要在 p的右邊加上賦值運算子,就可改變 p的值。如果p是乙個指向常量的指標,p就是乙個不能修改的左值,...

c 左值 右值 右值引用 左值引用

c 裡一切值必須屬於左值 右值兩者之一。左值 一切變數 包括用const修飾的變數 物件 包括引用都屬於左值 右值 一切字面值 可以是巨集 臨時無名物件 函式返回值 表示式 如a n 說明一下 函式返回值,返回的是某乙個型別的值,並不是返回變數。左值並不是說能放在 左邊的值就是左值 雖然用const...

c 左值 右值 左值引用 右值引用

在c語言中,左值認為是賦值語句的左側,右值認為是賦值語句的右側。在c 中,意義稍有不同。c 中,每乙個表示式會產生乙個左值或者右值,相應的,該表示式也就被稱作 左值表示式 右值表示式 乙個左值表示式的求值結果是乙個物件或者是乙個函式。左值可以當右值使用,而右值不能當左值使用。c prime 中這麼簡...