Apakah Perbezaan Antara Tingkah Laku yang Tidak Ditakrifkan dan Kecelaruan dalam C ?

Susan Sarandon
Lepaskan: 2024-11-21 18:23:16
asal
566 orang telah melayarinya

What's the Difference Between Undefined Behavior and Ill-Formedness in C  ?

Membezakan Tingkah Laku yang Tidak Ditakrifkan daripada Bentuk Yang Tidak Baik

Tingkah laku tidak terdefinisi (UB), tidak berbentuk dan tingkah laku yang ditentukan pelaksanaan adalah konsep yang berbeza dalam C . Walau bagaimanapun, terminologi piawaian boleh mengelirukan, terutamanya dengan frasa "tidak terbentuk; tiada diagnostik diperlukan."

Program dan Kebolehdiagnosaan yang Tidak Dibentuk

Kesakitan- program yang dibentuk melanggar sintaks atau peraturan semantik bahasa. Mengikut piawaian, ia "sebaliknya hanya ditakrifkan sebagai tidak terbentuk dengan baik." Secara logiknya, ini membayangkan bahawa atur cara yang tidak betul tidak seharusnya dikompilasi.

Walau bagaimanapun, piawaian membenarkan pelaksanaan mempunyai sambungan yang tidak betul mengikut standard tetapi tidak mengubah tingkah laku program yang dibentuk dengan baik . Dalam kes ini, pelaksanaan mesti mendiagnosis penggunaan sambungan tetapi dibenarkan untuk meneruskan pelaksanaan.

Tingkahlaku dan Diagnosa Tidak Ditakrifkan

Tingkah laku tidak ditentukan merujuk kepada tingkah laku program yang tidak boleh diramalkan oleh piawaian. Pelaksanaan bebas untuk menentukan tingkah laku dalam apa jua cara, termasuk dengan menggantung pelaksanaan atau mengabaikan masalah secara senyap. Tidak seperti bentuk yang tidak baik, UB tidak semestinya membayangkan bahawa program itu tidak boleh dikompilasi.

"Ill-Formed; No Diagnostic Required"

Istilah "ill-formed ; tiada diagnostik diperlukan" boleh ditafsirkan sebagai merujuk kepada situasi di mana program melanggar sintaks atau peraturan semantik, tetapi pelaksanaan tidak diperlukan untuk mendiagnosis ralat. Ini pada asasnya akan menjadikannya setara dengan UB, kecuali bahawa pelaksanaan mungkin masih keluar secara senyap atau meneruskan pelaksanaan.

Sebab penggunaan kata-kata sedemikian berkemungkinan membenarkan kefleksibelan dalam pelaksanaan. Ia membolehkan pelaksanaan untuk mengendalikan ralat yang sebaliknya akan menjadi tidak baik dengan cara yang mungkin berguna dalam amalan.

Kesimpulan

Walaupun perkataan standard C kadangkala tidak konsisten , peraturan umum ialah kod yang salah atau tidak betul memerlukan diagnostik melainkan piawaian menyatakan sebaliknya secara eksplisit atau ia tingkah laku yang tidak ditentukan. Dalam kes "tidak terbentuk; tiada diagnostik diperlukan," ia pada asasnya sinonim dengan gelagat yang tidak ditentukan, memberikan pelaksana beberapa latitud dalam cara mereka mengendalikan ralat tertentu.

Atas ialah kandungan terperinci Apakah Perbezaan Antara Tingkah Laku yang Tidak Ditakrifkan dan Kecelaruan dalam C ?. 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