Rumah > pembangunan bahagian belakang > C++ > Adakah C Menjamin Penilaian Litar Pintas untuk Semua Jenis Seperti Java?

Adakah C Menjamin Penilaian Litar Pintas untuk Semua Jenis Seperti Java?

Barbara Streisand
Lepaskan: 2024-11-09 15:01:02
asal
395 orang telah melayarinya

Does C   Guarantee Short-Circuit Evaluation for All Types Like Java?

Penilaian Litar Pendek dalam C : Perbandingan dengan Java

Dalam pengaturcaraan, penilaian litar pintas ialah teknik pengoptimuman prestasi penting yang digunakan dalam pernyataan bersyarat . Ia melibatkan penilaian operan dalam ungkapan dari kiri ke kanan dan menghentikan penilaian sebaik sahaja keputusan ditentukan.

Di Java, menggunakan operator && untuk litar pintas adalah amalan biasa:

if (a != null && a.fun());
Salin selepas log masuk

Ungkapan ini memanfaatkan penilaian litar pintas, di mana a.fun() hanya dinilai jika a tidak null.

Timbul persoalan: Bolehkah C meniru fungsi ini dengan ungkapan berikut?

if (a != 0 && a->fun());
Salin selepas log masuk

Walaupun ungkapan ini serupa dari segi sintaksis, perlu diperhatikan bahawa penilaian litar pintas dalam C bukanlah dijamin secara tersirat merentas semua jenis. Ia hanya dijamin untuk jenis terbina dalam seperti int, bool dan penunjuk.

Untuk jenis tersuai yang ditakrifkan oleh pengaturcara, terlebih memuatkan && atau || pengendali boleh mematikan litar pintas. Oleh itu, melebihkan pengendali ini secara amnya tidak digalakkan atas sebab prestasi.

Ringkasnya, sementara C menyokong penilaian litar pintas untuk jenis terbina dalam, ia tidak menjaminnya tanpa syarat untuk jenis yang ditentukan pengguna. Pengaturcara harus mempertimbangkan batasan ini apabila mereka bentuk kod yang bergantung pada litar pintas untuk prestasi optimum.

Atas ialah kandungan terperinci Adakah C Menjamin Penilaian Litar Pintas untuk Semua Jenis Seperti Java?. 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