Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Pengendali Bersyarat C (?:) Menentukan Nilai L atau Nilai R Berdasarkan Jenis Operan?

Bagaimanakah Pengendali Bersyarat C (?:) Menentukan Nilai L atau Nilai R Berdasarkan Jenis Operan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-08 18:48:12432semak imbas

How Does C  's Conditional Operator (?:) Determine Lvalue or Rvalue Based on Operand Types?

Taip Sistem dan Kategori Nilai dalam Operator Bersyarat (?:)

Dalam C , pengendali bersyarat (?:) menilai kepada a nilai jenis dan kategori nilai tertentu, yang mentakrifkan sama ada ia boleh merujuk kepada objek dalam ingatan atau tidak.

Pada yang pertama contoh disediakan:

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

Kedua-dua x dan y ialah pembolehubah int, dan keadaan x > y adalah palsu. Oleh itu, y diberikan nilai 100. Memandangkan jenis kedua-dua operan adalah sama, ungkapan bersyarat itu sendiri menjadi lnilai, yang bermaksud ia boleh diberikan kepada.

Walau bagaimanapun, dalam contoh kedua:

int x = 1;
long y = 2;
(x > y ? x : y) = 100;

x ialah int dan y ialah panjang, menjadikan jenis operan berbeza. Untuk membandingkan x dan y, penukaran diperlukan, yang menyebabkan ungkapan bersyarat menjadi rnilai dan bukannya lnilai. Memandangkan nilai r tidak boleh diberikan kepada, tugasan dalam kes ini adalah tidak sah.

Untuk meringkaskan, ungkapan bersyarat ialah nilai l jika operan kedua dan ketiga ialah nilai daripada jenis yang sama, membenarkan penetapan kepada keputusan. Jika mereka mempunyai jenis yang berbeza, ungkapan bersyarat menjadi nilai r, yang tidak boleh diberikan kepada.

Atas ialah kandungan terperinci Bagaimanakah Pengendali Bersyarat C (?:) Menentukan Nilai L atau Nilai R Berdasarkan Jenis Operan?. 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