[英]While loop won't brake after it's contition becomes false
如果我沒有正確使用這個網站,我很抱歉,我是編程新手,c++ 和這個地方。 我有下一個代碼:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
int main(){
char ch=0;
while(ch<1||ch>4){
cout<<"1)Calculos \n2)Fibonachi \n3)Calculos geometricos \n4)Salir\n";
cin>>ch;
system("cls");
}
}
當用戶輸入 1 到 4 之間的數字時,它應該打破循環,但它只是繼續循環。 我不知道為什么會這樣。
調試代碼並檢查ch
在cin
行之后得到什么值。 它認為這將是您鍵入的輸入字符的 ASCII 代碼,而不是您期望的 (1-4)。
您可能會使用ch < '1' || ch > '4'
ch < '1' || ch > '4'
代替。
問題是用字符輸入它。 ascii 字符 '1' 和 '4' 不等於整數 1 和 4。
如果您在 Mac/Linux 上,您可以通過鍵入man ascii
查看 ascii 表。 如果在 Windows 上,可能有離線的方法,或者您可以在線查找。 .
在表中,“1”是 integer 0x31,“4”是 integer 0x34。 所以你會希望你的 while 循環檢查那些 integer 值而不是 1 和 4。
最好,您可以檢查“1”和“4”,它應該為您進行轉換,特別是因為ch
被鍵入為char
while(ch<'1'||ch>'4'){
您已將ch
聲明為 char 並且while(ch<1||ch>4)
正在比較 int 值,如果您希望它中斷循環,請將ch
聲明為 int。 int ch =0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.