Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Inferens Jenis C Mempengaruhi Kelakuan Nilai/Rnilai Ungkapan Bersyarat?

Bagaimanakah Inferens Jenis C Mempengaruhi Kelakuan Nilai/Rnilai Ungkapan Bersyarat?

Linda Hamilton
Lepaskan: 2024-12-10 12:39:11
asal
259 orang telah melayarinya

How Does C   Type Inference Affect the Lvalue/Rvalue Behavior of Conditional Expressions?

Taip Inferens dalam Ungkapan Bersyarat

Operator bersyarat (?:) ialah alat berkuasa dalam C , membenarkan kod ringkas dan ekspresif. Walau bagaimanapun, memahami jenis hasil pengendali ini boleh menjadi penting untuk penggunaan yang betul.

Pertimbangkan contoh kod berikut:

int x = 1;
int y = 2;
(x > y ? x : y) = 100;
Salin selepas log masuk

Dalam kes ini, pengendali bersyarat pertama menilai kepada nilai r taip int, kerana kedua-dua operan adalah jenis int. Oleh itu, tugasan adalah sah.

Walau bagaimanapun, dalam contoh berikut:

int x = 1;
long y = 2;
(x > y ? x : y) = 100;
Salin selepas log masuk

Operan bersyarat tidak boleh dinilai kepada nilai l kerana operan kedua dan ketiga adalah daripada jenis yang berbeza. Akibatnya, tugasan kepada ungkapan ini adalah tidak sah:

error: lvalue required as left operand of assignment
      |     (x > y ? x : y) = 100;
      |     ~~~~~~~^~~~~~~~
Salin selepas log masuk

Untuk memahami tingkah laku ini, kita perlu menyelidiki konsep kategori nilai dalam C .

Ungkapan bersyarat mewarisi jenis dan kategori nilai daripada operannya. Jika kedua-dua operan ialah lnilai, ungkapan bersyarat juga ialah lnilai. Jika salah satu operan ialah nilai r, ungkapan bersyarat ialah nilai r.

Dalam contoh pertama, kedua-dua x dan y ialah lnilai daripada jenis yang sama, jadi ungkapan bersyarat menilai kepada nilai jenis int. Dalam contoh kedua, x ialah nilai l tetapi y ialah nilai r, jadi ungkapan bersyarat tidak boleh dinilai kepada nilai l.

Adalah penting untuk diingat bahawa kategori nilai pengendali bersyarat ditentukan pada masa penyusunan. Walaupun keadaan dinilai sebagai palsu, kategori jenis dan nilai ungkapan bersyarat mesti kekal konsisten. Ini selaras dengan peraturan bahawa sebelah kiri pengendali tugasan mestilah nilai l.

Atas ialah kandungan terperinci Bagaimanakah Inferens Jenis C Mempengaruhi Kelakuan Nilai/Rnilai Ungkapan Bersyarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan