左值(lvalue)和右值(rvalue)是編程中兩個重要的概念,主要用於區分表達式在代碼中的作用和性質。
左值通常指的是在賦值語句中出現在等號(=)左邊的表達式,代表可以有一個記憶體地址的對象,左值可以用於標識記憶體中的對象,如變數,它們可以在代碼中持續存在並在多次操作中使用。左值允許進行讀取和寫入操作,這是它們可以作為賦值目標的原因。例如,在表達式`arr = 10;`中,`arr`是一個左值,因為它表示一個可以存儲數據的記憶體位置。
右值則指的是賦值語句中出現在等號右邊的表達式,通常代表一個臨時的值,如字面量或函式返回值,右值不關聯具體的記憶體位置,它們主要用於提供數據或執行計算任務。例如,在表達式`int x = 10;`中,`10`是一個右值,因為它是一個臨時的數值。
簡而言之,左值是可定址的數據(locator value),而右值是臨時值(read value),主要用於讀取。這兩個概念是理解程式語言中數據操作和記憶體管理的基礎。