Rumah >pembangunan bahagian belakang >C++ >Tingkah Laku Tidak Ditakrifkan lwn. \'Penyakit Bentuk, Tiada Diagnostik Diperlukan\': Apakah Perbezaannya?

Tingkah Laku Tidak Ditakrifkan lwn. \'Penyakit Bentuk, Tiada Diagnostik Diperlukan\': Apakah Perbezaannya?

Susan Sarandon
Susan Sarandonasal
2024-12-02 16:14:12787semak imbas

Undefined Behavior vs.

Perbezaan antara Tingkah Laku Tidak Ditakrifkan dan "Terbentuk Tidak Benar, Tiada Diagnostik Diperlukan"

Piawaian C mengklasifikasikan tingkah laku program ke dalam pelbagai kategori, termasuk baik -berbentuk, tidak berbentuk, tidak ditentukan, dan tidak ditentukan. "Tingkah laku tidak ditentukan" merujuk kepada situasi di mana standard tidak memberikan keperluan atau andaian tentang tindak balas pelaksanaan. Sebaliknya, program "berbentuk tidak betul" melanggar peraturan sintaks atau semantik dan tidak dianggap terbentuk dengan baik.

Frasa "berbentuk tidak betul; tiada diagnostik diperlukan" muncul dalam piawaian dan nampaknya bercanggah dengan takrifan program yang tidak berbentuk. Mengikut piawaian, pelaksanaan yang mematuhi mesti menerima dan melaksanakan program yang dibentuk dengan baik, sementara tidak ada keperluan untuk program yang tidak berbentuk kecuali dalam kes penggunaan sambungan.

Ketidakkonsistenan ini berpunca daripada fakta bahawa C standard mendapat inspirasi daripada piawaian C, yang menganggap semua ralat sebagai tingkah laku yang tidak ditentukan melainkan dinyatakan sebaliknya secara eksplisit. Walau bagaimanapun, standard C bertujuan untuk memerlukan diagnostik untuk semua ralat secara lalai.

Akhirnya, kehadiran "tiada diagnostik diperlukan" menunjukkan bahawa tingkah laku yang dipersoalkan tidak dianggap tidak ditentukan. Ia berbeza daripada "tingkah laku tidak ditentukan" hanya kerana piawaian itu secara eksplisit membenarkan pengkompil untuk meneruskan penyusunan dan pelaksanaan tanpa mengeluarkan ralat atau amaran. Pembezaan ini digunakan terutamanya untuk menerangkan isu masa jalan dan bukannya ralat tatabahasa.

Ringkasnya, sementara istilah "tidak terbentuk; tiada diagnostik diperlukan" mungkin kelihatan mengelirukan, ia pada asasnya bermaksud sama dengan tingkah laku yang tidak ditentukan. Ia mewakili situasi di mana program tidak terbentuk dengan baik tetapi pengkompil dibenarkan untuk meneruskan tanpa menyediakan diagnostik. Perbezaan utama ialah "tidak betul; tiada diagnostik diperlukan" biasanya merujuk kepada isu masa jalan, manakala "tingkah laku tidak ditentukan" merangkumi kedua-dua ralat tatabahasa dan isu masa jalan.

Atas ialah kandungan terperinci Tingkah Laku Tidak Ditakrifkan lwn. \'Penyakit Bentuk, Tiada Diagnostik Diperlukan\': Apakah Perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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