Rumah >pembangunan bahagian belakang >C++ >Apakah yang Menentukan Jenis Keputusan (Nilai L atau Rvalue) Pengendali Ternari C?
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.
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!