L-Değeri ve R-Değeri İfadeleri
Bellek konumlarına başvuran ifadelere "l-value" ifadesi denir. L değeri, depolama bölgesinin "bulucu" değerini veya "sol" değerini temsil eder ve eşittir işaretinin (=
) solunda görünebileceğini gösterir. L değerleri genellikle tanımlayıcılardır.
Değiştirilebilir konumlara başvuran ifadelere "değiştirilebilir l-değerleri" denir. Değiştirilebilir l değeri dizi türüne, tamamlanmamış türe veya özniteliğine sahip bir türe const
sahip olamaz. Yapıların ve birleşimlerin değiştirilebilir l değerleri olması için özniteliğine const
sahip üyeleri olmamalıdır. Tanımlayıcının adı depolama konumunu belirtirken değişkenin değeri bu konumda depolanan değerdir.
Tanımlayıcı, bellek konumuna başvuruyorsa ve türü aritmetik, yapı, birleşim veya işaretçiyse değiştirilebilir bir l değeridir. Örneğin, bir depolama bölgesinin işaretçisi ise ptr
, *ptr
işaret eden ptr
depolama bölgesini belirten değiştirilebilir bir l değeridir.
Aşağıdaki C ifadelerinden herhangi biri l-value ifadeleri olabilir:
İntegral, kayan, işaretçi, yapı veya birleşim türünün tanımlayıcısı
Dizi olarak değerlendirilmeyen bir alt indis (
[ ]
) ifadesiÜye seçimi ifadesi (
->
veya.
)Bir diziye başvurmayan bir tekli dolaylılık (
*
) ifadesiAyraç içinde l-değer ifadesi
Bir
const
nesne (değiştirilemez bir l-değeri)
"r-value" terimi bazen bir ifadenin değerini tanımlamak ve bunu l değerinden ayırmak için kullanılır. Tüm l değerleri r-değerleridir, ancak tüm r-değerleri l değerleri değildir.
Microsoft'a Özgü
Microsoft C, nesnenin boyutu atama boyunca uzatılmadıkça l değerlerinin l değerleri olarak kullanılmasını sağlayan ANSI C standardının bir uzantısını içerir. (Daha fazla bilgi için bkz. Tür Atama Dönüştürmeleri.) Aşağıdaki örnekte bu özellik gösterilmektedir:
char *p ;
short i;
long l;
(long *) p = &l ; /* Legal cast */
(long) i = l ; /* Illegal cast */
Microsoft C için varsayılan değer, Microsoft uzantılarının etkin olmasıdır. Bu uzantıları devre dışı bırakmak için /Za derleyicisi seçeneğini kullanın.
END Microsoft'a Özgü