Aracılığıyla paylaş


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 (*) ifadesi

  • Ayraç 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ü

Ayrıca bkz.

İşlenenler ve İfadeler