什麼能被賦值(當左值或左值表達式)?

左值:具有存放數據的空間且允許存放
左值表達式:該表達式的運算結果是一個左值
以下是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

總之,左值都可以被賦值,由於左值表達式返回一個左值,因此也可以對其賦值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章