Masalah: Gelung Infinite dalam Ketidakpadanan Jenis Input Tidak Dikendali
Dalam gelung yang menjangkakan input berangka, adalah mungkin untuk menghadapi gelung infiniti jika bukan -input berangka disediakan melalui cin. Tingkah laku ini boleh dijelaskan dengan memahami cara cin mengendalikan input.
Penjelasan:
Apabila cin menemui input bukan berangka sambil mengharapkan nilai berangka, ia memasuki keadaan gagal. Dalam keadaan ini, cin akan berhenti menggesa untuk input selanjutnya, menyebabkan gelung diteruskan tanpa menunggu input pengguna.
Penyelesaian: Mengendalikan Ralat Jenis Input
Untuk mengelakkan infiniti gelung dalam situasi sedemikian, adalah penting untuk mengesan dan mengendalikan ralat jenis input. Satu pendekatan adalah untuk menyemak sama ada cin berada dalam keadaan gagal:
if (cin.fail()) { cout << "ERROR: Invalid input" << endl; // Clear the fail state cin.clear(); // Discard bad input characters (e.g., using numeric_limits or ignore()) }
Dengan mengendalikan keadaan gagal, cin boleh ditetapkan semula kepada keadaan pengendalian biasa, membenarkan gelung diteruskan selepas ralat telah ditangani.
Teknik Tambahan:
Untuk pengesahan input yang lebih mantap, pertimbangkan untuk menggunakan yang berikut teknik:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang Gelung Infinite Disebabkan oleh Ketidakpadanan Jenis Input Tidak Terkendali dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!