左值:具有存放數據的空間且允許存放
左值表達式:該表達式的運算結果是一個左值
以下是C艹中的幾個例子:
int a=0;
a=3;//正確,此處a是左值
//a最後的值爲3
const int a=0;
a=3;//錯誤,此處a爲常變量,不允許被再次存放,不能當左值
//a賦值錯誤
int a=0,k=1;
++a=k;//正確,因爲它使a的值+1,運算結果依然是變量a,所以++a是左值表達式
//a最後的值爲k的值1
int a=0,k=1;
a++=k; //錯誤,因爲a++的運算結果是一個臨時變量,
//而這個臨時變量並不是你程序中定義的可尋址變量的引用,不能被更改,不能作爲左值表達式
//a賦值錯誤
int a=0,k=1;
(a=k)=3;//正確,先執行(a=k),這個賦值表達式的運算結果依然是變量a,數值上等於k的值,因此可以作爲左值表達式
//a最後的值爲3
總之,左值都可以被賦值,由於左值表達式返回一個左值,因此也可以對其賦值。