Rumah >pembangunan bahagian belakang >C++ >Mengapa Program C Saya Memasuki Gelung Infinite dengan Input Bukan Numerik?
Mengapa Program Bergelung Tanpa Kesudahan Apabila Memasukkan Huruf Daripada Nombor?
Apabila cuba memasukkan integer positif dalam program C tetapi sebaliknya memasukkan huruf secara tidak sengaja, gelung tak terhingga mungkin berlaku. Tingkah laku ini berpunca daripada cara aliran input cin memproses aksara.
Apabila input tidak betul (cth., huruf dan bukannya nombor), strim cin menetapkan bendera failbit dan meninggalkan input yang salah dalam penimbal. Percubaan seterusnya untuk membaca integer menggunakan cin akan terus mengembalikan input yang salah, mengakibatkan gelung yang tidak berkesudahan.
Untuk menyelesaikan isu ini, adalah penting untuk mengendalikan input yang salah dengan betul dengan menyemak ralat dan mengosongkan penimbal input. Berikut ialah versi kod yang diubah suai yang termasuk pengendalian ralat:
#include <iostream> #include <limits> int main() { // Define variables int num1, num2, total; char answer1; do { // User enters a number cout << "\nPlease enter a positive number and press Enter: "; while (!(cin >> num1)) { cout << "Incorrect input. Please try again." << endl; cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); } if (num1 < 0) cout << "The number you entered is negative. Please enter a positive number to continue." << endl; } while (num1 < 0); // Rest of the code goes here return 0; }
Dalam kod yang dikemas kini ini, gelung sementara (!(cin >> num1)) berjalan sehingga integer yang sah dimasukkan. Apabila input yang salah dikesan, mesej ralat dipaparkan dan penimbal input dikosongkan menggunakan cin.clear() dan cin.ignore(). Ini memastikan program boleh meneruskan membaca input dengan betul selepas mengendalikan ralat.
Atas ialah kandungan terperinci Mengapa Program C Saya Memasuki Gelung Infinite dengan Input Bukan Numerik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!