Penilaian Litar Pintas dalam C : Kisah Berhati-hati
Di Jawa, penilaian litar pintas memastikan bahawa operan yang betul bagi pengendali logik adalah hanya dilaksanakan jika operan kiri bernilai benar. Tingkah laku ini membolehkan pelaksanaan kod yang cekap dengan mengelakkan pengiraan yang tidak perlu.
Sekarang, mari kita pertimbangkan senario yang serupa dalam C :
if (a != 0 && a->fun());
Walaupun kod ini meniru tingkah laku yang diingini dalam Java, adalah penting untuk ambil perhatian bahawa penilaian litar pintas untuk jenis yang ditentukan pengguna tidak dijamin dalam C . Ini bermakna bahawa panggilan a->fun() boleh dilaksanakan walaupun a adalah batal, membawa kepada gelagat tidak ditentukan.
Sebab di sebalik percanggahan ini terletak pada sifat terlebih beban pengendali logik && dan || dalam C . Apabila digunakan pada jenis yang ditentukan pengguna, pengendali ini boleh disesuaikan oleh pengaturcara, yang berpotensi mengatasi gelagat lalai penilaian litar pintas.
Oleh itu, untuk memastikan mudah alih dan mengelakkan hasil yang tidak dapat diramalkan, adalah dinasihatkan untuk mengelak daripada melebihkan && dan || pengendali untuk jenis tersuai. Untuk jenis terbina dalam seperti int dan bool, bagaimanapun, penilaian litar pintas dijamin, membolehkan anda menggunakan teknik pengoptimuman yang berkuasa ini dalam C seperti yang anda lakukan di Java.
Atas ialah kandungan terperinci Adakah Penilaian Litar pintas Dijamin dalam C untuk Jenis Ditentukan Pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!