Rumah >pembangunan bahagian belakang >C++ >Mengapakah String Literals L-Values dalam C dan C manakala Literal Lain Adalah R-Values?
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.
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.
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.
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.
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!