Bagikan melalui


Ekspresi Nilai-L dan Nilai-R

Ekspresi yang merujuk ke lokasi memori disebut sebagai ekspresi "nilai-l". Nilai-l mewakili nilai "pencari" wilayah penyimpanan, atau nilai "kiri", yang menyiratkan bahwa nilai tersebut dapat muncul di sebelah kiri tanda sama dengan (=). Nilai-L sering kali merupakan pengidentifikasi.

Ekspresi yang mengacu pada lokasi yang dapat dimodifikasi disebut "nilai-l yang dapat dimodifikasi." Nilai l yang dapat dimodifikasi tidak dapat memiliki jenis array, jenis yang tidak lengkap, atau jenis dengan const atribut . Agar struktur dan gabungan bisa menjadi nilai-l yang dapat dimodifikasi, mereka tidak boleh memiliki anggota dengan atribut const. Nama pengidentifikasi menunjukkan lokasi penyimpanan, sementara nilai variabel adalah nilai yang disimpan di lokasi tersebut.

Sebuah pengidentifikasi adalah nilai-l yang dapat dimodifikasi jika mengacu pada lokasi memori dan jika tipenya adalah aritmatika, struktur, gabungan, atau penunjuk. Misalnya, jika ptr adalah penunjuk ke wilayah penyimpanan, maka *ptr adalah nilai-l yang dapat dimodifikasi yang menetapkan wilayah penyimpanan yang ditunjuk ptr.

Ekspresi C mana saja dari daftar berikut dapat menjadi ekspresi nilai-l:

  • Pengidentifikasi tipe integral, terapung, penunjuk, struktur, atau gabungan

  • Ekspresi subskrip ([ ]) yang tidak dievaluasi ke array

  • Ekspresi pemilihan anggota (-> atau .)

  • Ekspresi unary-indirection (*) yang tidak merujuk ke array

  • Ekspresi nilai-l dalam tanda kurung

  • Objek const (nilai l yang tidak dapat dimodifikasi)

Istilah "nilai-r" terkadang digunakan untuk menggambarkan nilai suatu ekspresi dan untuk membedakannya dari nilai l. Semua nilai-l adalah nilai-r, tetapi tidak semua nilai-r adalah nilai-l.

Khusus Microsoft

Microsoft C menyertakan ekstensi ke standar ANSI C yang memungkinkan cast l-values digunakan sebagai l-values, selama ukuran objek tidak diperpanjang melalui cast. (Untuk informasi selengkapnya, lihat Konversi Jenis-Cast.) Contoh berikut mengilustrasikan fitur ini:

char *p ;
short  i;
long l;

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

Default untuk Microsoft C adalah ekstensi Microsoft diaktifkan. Gunakan opsi kompilator /Za untuk menonaktifkan ekstensi ini.

AKHIR Khusus Microsoft

Lihat juga

Operand dan Ekspresi