2014-02-09 46 views
0

我有一個關於在C語言的if語句的問題,這個語句是在執行循環。如果turbo的條件C + +

gotoxy(27,22);cout<<"Do you want to continue [Y]?"; 
    sub=getche(); 
    if(sub!='y' || sub!='Y') 
    { 

     gotoxy(27,24);cout<<"INVALID ANSWER!!"; 
     gotoxy(27,26);cout<<"Closing Program...."; 
     delay(3000); 
     exit(1); 
    }else 
    { 
     sub=ans; 
    } 
}while(tolower(ans)=='y'); 

每當我在可變子輸入Y開if語句仍在執行代碼..請有人告訴我哪裏是錯誤..謝謝!

+1

製作一張真相表。 – chris

+1

不要混合iostreams和stdio。如果你使用cout來輸出,你應該使用cin來輸入。如果您想使用getche輸入,請使用printf輸出。 – Jherico

+0

我沒有包含stdio。 – user2959418

回答

2

(sub!='y' || sub!='Y')布爾表達式的計算結果始終爲true

這條線:

if(sub!='y' || sub!='Y') 

需求是這樣的:

if ((sub != 'y') && (sub != 'Y')) 
+1

請注意,雖然額外的括號可能會澄清代碼,但在這裏它們不是必需的,我認爲通常不會在這樣的簡單條件下使用。 – hyde

+0

@hyde - 我爲自己的團隊編寫的編碼準則是在單個布爾表達式附近使用額外的括號。它明確了正在評估的內容,並避免了對挑剔的操作符優先順序的歧義。我喜歡與我如何運用這種風格(即總是)保持一致。我知道有些人會不同意... – selbie

+0

我改變它爲&&但它只是在我輸入y後退出程序。和更早的我也試圖將其更改爲if(tolower(sub)!='y')它仍然執行如果語句代碼.. :( – user2959418

0

您的代碼if(sub!='y' || sub!='Y')將是真實的,不管是什麼你輸入,因爲sub!='y'sub!='Y'將評估爲true。因此使用&&而不是||

+0

我試着將它改成&&但它不會通過我的else語句而退出程序: – user2959418

+0

嘗試在其他部分添加cout語句並檢查是否顯示任何輸出 –