Rumah > pembangunan bahagian belakang > C++ > Mengapa Pembolehubah Tempatan Tidak Dimulakan dalam C Cetak 0?

Mengapa Pembolehubah Tempatan Tidak Dimulakan dalam C Cetak 0?

Susan Sarandon
Lepaskan: 2024-11-11 09:08:03
asal
1078 orang telah melayarinya

Why Does an Uninitialized Local Variable in C   Print 0?

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;
}
Salin selepas log masuk

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!

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