Rumah >pembangunan bahagian belakang >C++ >Adakah Keputusan Pengendali Ternary adalah Lvalue atau Rvalue?

Adakah Keputusan Pengendali Ternary adalah Lvalue atau Rvalue?

Susan Sarandon
Susan Sarandonasal
2024-12-09 20:50:13333semak imbas

Is the Ternary Operator's Result an Lvalue or an 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:

  • Jika kedua-dua operan ialah lnilai jenis yang sama, hasilnya ialah nilai l jenis itu.
  • Jika kedua-dua operan ialah rnilai, hasilnya ialah prvalue (nilai r yang dipadamkan jenis).
  • Jika satu operan ialah nilai l dan satu lagi ialah rvalue, hasilnya ialah rvalue.

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!

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