Adakah Penilaian Litar pintas Dijamin dalam C untuk Jenis Ditentukan Pengguna?

Barbara Streisand
Lepaskan: 2024-11-10 17:40:04
asal
864 orang telah melayarinya

Is Short-Circuit Evaluation Guaranteed in C   for User-Defined Types?

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());
Salin selepas log masuk

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!

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