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!