Rumah >pembangunan bahagian belakang >C++ >Mengapakah Memulakan Pembolehubah dengan Sendirinya Sah Secara Sintaksis Tetapi Tingkah Laku Tidak Ditakrifkan?
Mengapakah Memulakan Pembolehubah Dengan Sendiri Sah?
Pertimbangkan coretan kod berikut:
<code class="cpp">int a = a;</code>
Kod ini memulakan pembolehubah a dengan nilai dirinya sendiri, tetapi mengapa sintaks ini sah?
Kesahan Sintaksis
Sintaks permulaan ini sah kerana titik pengisytiharan of a datang sebelum pemulanya, menjadikan nama itu tersedia untuk digunakan dalam pemulaannya sendiri. Ini membenarkan pengamulaan yang kurang samar-samar seperti:
<code class="cpp">void *p = &p;</code>
Dalam kes ini, nama p digunakan untuk merujuk kepada dirinya sendiri.
Ketidaksahihan Tingkah Laku
Walaupun sah dari segi sintaksis, gelagat memulakan pembolehubah dengan nilai yang tidak dimulakan sendiri tidak ditentukan. Ini kerana menggunakan nilai objek yang tidak dimulakan boleh membawa kepada hasil yang tidak dapat diramalkan. Kebanyakan penyusun akan mengeluarkan amaran untuk kes sedemikian, walaupun ia mungkin bukan ralat yang memerlukan diagnosis.
Sebab Kesahihan
Sebab membenarkan sintaks ini adalah untuk menyediakan fleksibiliti dalam senario permulaan. Sebagai contoh, ia membenarkan rujukan bulat dan permulaan rujukan sendiri. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa permulaan sedemikian boleh mengakibatkan tingkah laku tidak ditentukan jika pembolehubah digunakan tanpa dimulakan dengan betul di tempat lain dalam kod.
Atas ialah kandungan terperinci Mengapakah Memulakan Pembolehubah dengan Sendirinya Sah Secara Sintaksis Tetapi Tingkah Laku Tidak Ditakrifkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!