共用方式為


值 (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 特定

請參閱

概念

運算元和運算式