Rumah >pembangunan bahagian belakang >C++ >Adakah Keputusan Pengendali Ternary adalah Lvalue atau Rvalue?
Pengendali Bersyarat Ternary dan Nilai L atau R Hasilnya
Pengendali ternary/bersyarat ('?:') menyediakan sintaks singkatan untuk memilih satu daripada dua ungkapan berdasarkan keadaan. Memahami jenis hasil operator ini adalah penting untuk pelbagai tugas pengaturcaraan.
Ungkapan Bersyarat sebagai Lvalue
Operator bersyarat mengembalikan nilai l apabila operan kedua dan ketiga ialah nilai l daripada jenis yang sama. Ini diperhatikan apabila kedua-dua operan (x dan y) dalam kod berikut ialah integer:
int x = 1; int y = 2; (x > y ? x : y) = 100; // Assignment is allowed since the result is an lvalue
Dalam kes ini, ungkapan bersyarat (x > y ? x : y) ialah nilai l, yang membolehkan tugasan seterusnya kepada 100.
Ungkapan Bersyarat sebagai Rvalue
Walau bagaimanapun, apabila operan kedua dan ketiga mempunyai jenis yang berbeza, ungkapan bersyarat menjadi rnilai. Ini jelas dalam kod berikut:
int x = 1; long y = 2; (x > y ? x : y) = 100; // Error: Assignment is not allowed for rvalues
Disebabkan penukaran tersirat x kepada panjang untuk memadankan jenis y, ungkapan bersyarat menjadi nilai r. Memandangkan nilai r tidak boleh diubah suai, operasi penugasan gagal.
Menentukan Jenis Hasil
Jenis dan kategori nilai ungkapan bersyarat ditentukan pada masa penyusunan. Ia mematuhi peraturan berikut:
Memahami peraturan ini memastikan penggunaan operator ternary/bersyarat dengan berkesan.
Atas ialah kandungan terperinci Adakah Keputusan Pengendali Ternary adalah Lvalue atau Rvalue?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!