Rumah >pembangunan bahagian belakang >C++ >Mengapa Input Surat Menyebabkan Gelung Infinite dalam Program C Saya?
Isu Gelung Tak Terhingga dalam Program C Menerima Surat sebagai Input Integer
Isu ini timbul apabila atur cara menjangkakan input integer, tetapi pengguna masuk sepucuk surat sebaliknya. Program ini memasuki gelung tak terhingga disebabkan oleh watak yang tidak dijangka dalam aliran input. Ini menghasilkan paparan berterusan mesej "Nombor yang anda masukkan adalah negatif. Sila masukkan nombor positif untuk meneruskan." tanpa memberi pengguna peluang untuk memasukkan nombor yang sah.
Penjelasan
Sebab asas isu ini terletak pada gelagat aliran input C. Apabila pengguna memasukkan aksara bukan angka, bendera "failbit" aliran input ditetapkan. Walau bagaimanapun, strim tidak dikosongkan, jadi program kekal tersekat dalam lelaran gelung yang sama, cuba membaca aksara tidak sah berulang kali.
Penyelesaian
Untuk menyelesaikan masalah ini , adalah perlu untuk melaksanakan pengesahan input yang betul dan pengendalian ralat. Berikut ialah contoh cara menangani isu ini:
#include <iostream> #include <limits> // ... (remaining code) cout > num1)) { cout ::max(), '\n'); } if (num1 <p>Dalam kod yang diubah suai ini:</p> <ul> <li>Gelung while telah dikapsulkan dalam gelung do-while, memastikan sekurang-kurangnya satu pelaksanaan walaupun input awal tidak sah.</li> <li>Di dalam gelung dalam, pengesahan input yang betul dilaksanakan menggunakan fungsi cin.fail().</li> <li>Jika input tidak sah dikesan, mesej ralat dipaparkan dan penimbal cin dikosongkan dan diabaikan untuk mengelakkannya daripada menjejaskan percubaan input berikutnya.</li> <li>Pengguna kemudian digesa untuk memasukkan semula integer yang sah.</li> <li>Proses ini berterusan sehingga pengguna memasukkan nilai positif integer.</li> </ul></limits></iostream>
Atas ialah kandungan terperinci Mengapa Input Surat Menyebabkan Gelung Infinite dalam Program C Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!