Nilai Lalai: Kisah Dua Pembolehubah
Dalam C , pembolehubah tidak dimulakan menimbulkan teka-teki. Kebijaksanaan konvensional menetapkan bahawa pembolehubah tersebut harus memegang nilai sampah. Walau bagaimanapun, dalam senario yang membingungkan, kod berikut menghasilkan 0:
int main() { int a; cout << a; return 0; }
Mengapa kod ini berkelakuan di luar jangkaan?
Penjelasan terletak pada gelagat berbeza pembolehubah tempatan dan bukan tempatan. Untuk pembolehubah tempatan seperti "a" dalam kod yang diberikan, C memberikannya nilai tak tentu secara lalai. Menggunakan nilai ini tanpa permulaan mencetuskan gelagat yang tidak ditentukan, yang akibatnya boleh berjulat daripada yang tidak berbahaya kepada malapetaka.
Sebagai alternatif, pembolehubah bukan setempat, termasuk pembolehubah setempat-benang, mewarisi permulaan sifar daripada rakan globalnya. Walau bagaimanapun, dalam contoh yang diberikan, "a" ialah pembolehubah setempat, tidak tertakluk kepada pengamulaan ini.
Untuk mengelakkan perangkap, pengaturcara amat digalakkan untuk memulakan semua pembolehubah secara eksplisit. Pembolehubah global, walaupun kadangkala dibenarkan dalam aplikasi khusus tertentu, harus didekati dengan berhati-hati kerana potensinya untuk tingkah laku yang tidak ditentukan.
Atas ialah kandungan terperinci Mengapa Pembolehubah Tempatan Tidak Dimulakan dalam C Cetak 0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!