Rumah > Artikel > pembangunan bahagian belakang > Mengapakah Memulakan Pembolehubah dengan Sendiri Membawa kepada Gelagat Tidak Ditakrifkan dalam C/C ?
Menggunakan Pembolehubah Baru Diisytiharkan dalam Permulaan (int x = x 1)
Dalam C/C , tingkah laku mengisytiharkan pembolehubah dan memulakan ia menggunakan nilai pembolehubah yang sama (cth., "int x = x 1;") mungkin kelihatan mengejutkan. Artikel ini menyelidiki mekanik dan implikasi pengisytiharan sedemikian.
Pengisytiharan dan Permulaan Pembolehubah
Pengisytiharan dan permulaan pembolehubah ialah dua langkah yang berbeza dalam C/C . Pengisytiharan mencipta nama untuk pembolehubah, manakala permulaan memberikan nilai kepada pembolehubah itu. Dalam contoh yang disediakan ("int x = x 1;"), pembolehubah x diisytiharkan dengan nilai awal.
Mekanik
Tingkah laku ini dibenarkan kerana pembolehubah x wujud pada titik permulaan (tanda '='). Ini bermakna ia boleh diakses untuk digunakan di sebelah kanan ungkapan permulaan. Ia bertindak sebagai pembolehubah yang tidak dimulakan sehingga tugasan selesai.
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa tingkah laku ini hanya dibenarkan untuk pembolehubah dengan tempoh storan statik (iaitu, diisytiharkan di luar fungsi). Untuk pembolehubah yang diisytiharkan secara setempat (cth., dalam fungsi), menggunakan pembolehubah yang tidak dimulakan di sebelah kanan ungkapan permulaan menghasilkan gelagat yang tidak ditentukan.
C Definisi Standard
Piawaian C 03 menyatakan bahawa "titik pengisytiharan untuk nama adalah serta-merta selepas pengisytiharan lengkapnya ... dan sebelum pemulanya (jika ada)." Ini bermakna x kedua dalam contoh yang disediakan dimulakan dengan nilainya yang tidak dimulakan sendiri, mengakibatkan tingkah laku yang tidak ditentukan.
Kesimpulan
Walaupun mungkin untuk mengisytiharkan dan memulakan pembolehubah menggunakan nilainya sendiri, amalan ini harus dielakkan. Ia boleh membawa kepada tingkah laku yang tidak ditentukan dalam situasi tertentu dan secara amnya dianggap sebagai gaya pengekodan yang lemah. Lebih suka mengisytiharkan dan memulakan pembolehubah secara berasingan untuk memastikan kejelasan dan kebolehramalan dalam kod anda.
Atas ialah kandungan terperinci Mengapakah Memulakan Pembolehubah dengan Sendiri Membawa kepada Gelagat Tidak Ditakrifkan dalam C/C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!