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());
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());
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!