Rumah >pembangunan bahagian belakang >C++ >Apakah yang Menentukan Jenis Keputusan (Nilai L atau Rvalue) Pengendali Ternari C?

Apakah yang Menentukan Jenis Keputusan (Nilai L atau Rvalue) Pengendali Ternari C?

DDD
DDDasal
2024-12-23 08:51:14220semak imbas

What Determines the Result Type (Lvalue or Rvalue) of the C   Ternary Operator?

Jenis Keputusan Operator Ternary

Pengendali ternary (?:) boleh menghasilkan hasil yang berbeza-beza bergantung pada jenis operannya. Ini selalunya menjadi punca kekeliruan, terutamanya berkenaan dengan rujukan lnilai dan rnilai.

Dalam contoh pertama, keadaan dinilai untuk menentukan sama ada x lebih besar daripada y. Jika benar, hasil ungkapan ialah x, yang merupakan rujukan nilai. Ini membolehkan kami menetapkan nilai kepadanya melalui pengendali tugasan (=) dalam baris berikutnya.

int x = 1;
int y = 2;
(x > y ? x : y) = 100; // Assigns 100 to x

Walau bagaimanapun, dalam contoh kedua, operan kedua dan ketiga mempunyai jenis yang berbeza (int dan panjang) . Untuk menyelesaikan masalah ini, pengkompil mesti menukar salah satu operan untuk dipadankan dengan yang lain. Ini akan menghasilkan nilai r, bukan nilai l, sebagai hasil ungkapan.

int x = 1;
long y = 2;
(x > y ? x : y) = 100; // Compilation error: lvalue required for assignment

Perbezaan utama ialah pengendali ternary memerlukan kedua-dua operan menjadi lnilai daripada jenis yang sama untuk ungkapan yang terhasil menjadi satu nilai. Kegagalan untuk memenuhi syarat ini membawa kepada ralat penyusunan apabila cuba memberikan nilai pada ungkapan.

Verständnis der Wertekategorie

Tingkah laku ini menekankan kepentingan memahami kategori nilai dalam C . Lvalues ​​dan rvalues ​​menentukan sama ada ungkapan boleh menjadi sasaran operasi tugasan, seperti dalam kes operator ternary. Pemahaman yang jelas tentang konsep ini adalah penting untuk menulis kod C yang betul dan cekap.

Atas ialah kandungan terperinci Apakah yang Menentukan Jenis Keputusan (Nilai L atau Rvalue) Pengendali Ternari C?. 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