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 arrayEkspresi pemilihan anggota (
->
atau.
)Ekspresi unary-indirection (
*
) yang tidak merujuk ke arrayEkspresi 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk