簡體   English   中英

While 循環在它的 contition 變為 false 后不會剎車

[英]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 之間的數字時,它應該打破循環,但它只是繼續循環。 我不知道為什么會這樣。

調試代碼並檢查chcin行之后得到什么值。 它認為這將是您鍵入的輸入字符的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM