我目前正在學習 c ,但我的代碼出現了一個奇怪的行為:
#include<iostream>
using namespace std;
int main(){
int input;
int counter = 0;
while (input != 0 && counter <= 100){
cout << "-----------\n";
cout << "0 = Get Out!\nEverything else will be displayed!\nPlease enter a number: ";
cin >> input;
cout << "The number: " << input << "\n";
counter ;
}
return 0;
}
這個程式本身作業正常,但是當我輸入一個數字作為輸入時,至少是整數資料型別的最大值 1,那么這個回圈將是無限的(我在 100 個回圈后編程了一個停止),我無法真正解釋這一點對我來說。在其他語言中,程式只是崩潰或發出錯誤,因為分配的存盤空間不足以容納輸入的資料,什么是邏輯,我理解,但是為什么回圈在這里變得無窮無盡,這并沒有感覺,因為在這種情況發生后我不能做任何輸入,它只是不斷地回圈使用值(整數 maxnumber,在我的書中,maxnumber 可以因系統而異,所以我不輸入我的數字)無休止地和我什么也做不了,但只能看著我的控制臺被同樣的 4 行代碼淹沒。
我真的很感激,如果有人可以向我解釋這種現象,我的意思是它并不重要,但無論如何它引起了我的興趣。
uj5u.com熱心網友回復:
- 您的
input變數需要初始化,因為您while (input != 0 && counter <= 100){在分配輸入值之前檢查了它的值。 - 當超出資料型別限制時,未定義行為在 C 中很常見。這些是一些常見的UB。
- 這篇文章包含您問題的“解決方案”
uj5u.com熱心網友回復:
下面的呢?這是你想要的嗎?
#include<iostream>
using namespace std;
int main(){
int input;
int counter = 0;
cout << "0 = Get Out!\nEverything else will be displayed!\nPlease enter a number: ";
cin >> input;
cout << "The number: " << input << "\n";
while (input != 0 && counter <= 100){
cout << "Please enter the next number: ";
cin >> input;
cout << "The number: " << input << "\n";
counter ;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/429307.html
