值 (L-VALUE) 和 R-Value 運算式
請參閱記憶體位置的運算式稱為"值 (l-value) 」 的運算式。 左值表示儲存區域的 「 搜尋 」 值或 「 左 」 的值,意味著它可以出現在等號左邊 (=)。 左值通常是識別項。
指的可修改的位置的運算式就稱為 「 可修改 l-值 」。 可修改左值陣列型別、 不完整的型別或具有的型別,不能有 const 屬性。 對於結構和等位是可修改左值,它們並不能擁有的任何成員 const 屬性。 識別項的名稱代表的儲存位置,而變數的值是儲存在該位置的值。
識別項是可修改值 (l-value),若它參考的記憶體位置,和它的型別是算術、 結構、 等位或指標。 比方說,如果ptr ,就是指向儲存區域, *ptr是可修改左值,指定要儲存地區ptr點。
任何下列 c 的運算式可以是左值的運算式:
整數、 浮、 指標、 結構或等位型別的識別項
為下標 ([]) 不等於陣列的運算式
成員選擇運算式 (-> 或 .)
一元間接取值 (*) 未參照到一個陣列的運算式
括弧中的值 (l-value) 運算式
A const 物件 (為不可修改左值)
"R-value"這個詞有時會用來描述運算式的值和值 (l-value) 有所區別。 所有的左值的 r 值,但並非所有的 r 值是左值。
Microsoft 專有的
Microsoft c 包含了允許的左值做為左值的轉換 (cast),只要物件的大小不會加長透過轉型的 ANSI C 標準的擴充。 (請參閱型別轉換轉換如需詳細資訊。) 下列範例會說明這項功能:
char *p ;
short i;
long l;
(long *) p = &l ; /* Legal cast */
(long) i = l ; /* Illegal cast */
Microsoft c 的預設值是 Microsoft 擴充功能會啟用。 您可以使用 [/Za 編譯器選項來停用這些擴充功能。
結束 Microsoft 特定