共用方式為


左值和右值運算式

參考記憶體位置的運算式稱為「左值」運算式。 左值代表儲存區域的「定位程式」值或「左」值,表示它可以在等號 (=) 的左側出現。 左值通常是識別項。

參考可修改位置的運算式稱為「可修改的 l-values」。可修改的 l 值不能有陣列類型、不完整的類型,或是具有 屬性的類型 const 。 若要讓結構和等位成為可修改的 l 值,它們不得具有屬性的任何成員 const 。 識別項的名稱表示儲存位置,而變數值是指儲存在該位置的值。

如果識別項參考記憶體位置且其類行為算術、結構、等位或指標,該識別項就是可修改的左值。 例如,如果 ptr 是儲存區域的指標,則 *ptr 是指定 ptr 所指向之儲存區域的可修改左值。

下列任何 C 運算式都可以是左值運算式:

  • 整數類資料、浮點、指標、結構或等位型別的識別項。

  • 未評估為數組的下標 ([ ]) 運算式

  • 成員選取運算式 (->.)

  • 不參考陣列的一元間接 (*) 運算式

  • 括號內的左值運算式

  • const物件 (不可修改的 l 值)

「右值」這個詞有時用來描述運算式的值,並且與左值做區分。 所有左值都是右值,但並非所有右值都是左值。

Microsoft 特定的

Microsoft C 包含 ANSI C 標準的延伸模組,可讓 l 值轉換當做 l 值使用,只要物件的大小未透過轉換來延長。 (如需詳細資訊,請參閱 Type-Cast Conversions.) 下列範例說明這項功能:

char *p ;
short  i;
long l;

(long *) p = &l ;       /* Legal cast   */
(long) i = l ;          /* Illegal cast */

Microsoft C 預設會啟用 Microsoft 擴充功能。 使用 /Za 編譯器選項可停用這些擴充功能。

END Microsoft Specific

另請參閱

運算元和運算式