Rumah >pembangunan bahagian belakang >C++ >Mengapakah String Literals L-Values ​​dalam C dan C manakala Literal Lain Adalah R-Values?

Mengapakah String Literals L-Values ​​dalam C dan C manakala Literal Lain Adalah R-Values?

Patricia Arquette
Patricia Arquetteasal
2024-11-28 11:15:12903semak imbas

Why Are String Literals L-Values in C and C   While Other Literals Are R-Values?

Mengapa Huruf Rentetan Adalah Nilai-L Manakala Huruf Lain Adalah Nilai-R

Dalam C dan C , literal rentetan adalah pengecualian kepada peraturan bahawa semua literal ialah r -nilai. Piawaian C 03 menyatakan bahawa, sementara literal lain ialah nilai-r, literal rentetan ialah nilai-l. Begitu juga, piawaian C99 mentakrifkan literal rentetan sebagai nilai-l.

Rasional

Pembezaan ini berpunca daripada sifat literal rentetan sebagai objek. Tidak seperti literal lain, yang mewakili nilai tetap, literal rentetan ialah objek jenis tatasusunan. Dalam C, tatasusunan hanya dibenarkan wujud sebagai nilai-l dalam ungkapan.

Untuk menjadikan literal rentetan lebih berguna, adalah tidak praktikal untuk mentakrifkannya sebagai mempunyai jenis penunjuk dan bukannya jenis tatasusunan. Ini akan menghalang penggunaan operator saiz pada literal rentetan.

Kes Literal Kompaun

Piawaian C99 memperkenalkan literal kompaun, yang juga merupakan nilai-l. Pengenalan mereka mencadangkan peralihan ke arah norma literal sebagai nilai-l dan bukannya pengecualian khas. Literal majmuk membenarkan penciptaan objek sementara yang dimulakan dengan nilai tertentu. Seperti literal rentetan, ia wujud sebagai nilai-l.

Konteks Sejarah

Sebab pembezaan ini juga mungkin berakar dalam seni bina perkakasan. Dalam komputer awal, rentetan disimpan sebagai tatasusunan aksara dan bukannya penunjuk kepada tatasusunan aksara. Konteks sejarah ini mungkin telah mempengaruhi pilihan mentakrifkan literal rentetan sebagai nilai-l.

Kesimpulan

Tersurat rentetan ditakrifkan sebagai nilai-l dalam C dan C kerana ia adalah objek jenis tatasusunan. Walaupun literal lain ialah nilai tetap, literal rentetan ialah objek yang boleh diubah suai atau dirujuk. Perbezaan ini membolehkan penggunaan literal rentetan yang lebih fleksibel dalam pengaturcaraan.

Atas ialah kandungan terperinci Mengapakah String Literals L-Values ​​dalam C dan C manakala Literal Lain Adalah R-Values?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn