2011-10-02 182 views
4

因此,我正在製作一個程序,詢問用戶是否想要做某件事。答案與Y/N一樣簡單。我希望該計劃能夠接受大寫和小寫字母「Y」。問題是,當我輸入while (answer == 'Y', answer == 'y')時,只接受小寫字母「Y」。如果我輸入while (answer == 'y', answer == 'Y')在do ... while循環中使用多個條件

我在做什麼錯?

(更多信息:「答案」是我的「字符」變量的名稱,而我使用「的iostream」,「cstdlib」和「串」庫)

+0

只是好奇,爲什麼你甚至會認爲逗號可能以這種方式工作?是否還有另一種語言? –

+0

我很確定我在Java中看到了類似的東西。這是前一陣子,我沒有最好的記憶,所以這是任何人的猜測。 – h3half

+1

@DonReba也許是因爲你可以在c中做'for(i = 0,j = 0; i + j <8; i ++,j ++)'' – kratenko

回答

5

您需要使用'邏輯或' 運算符||

所以,你的代碼將成爲while (answer =='Y' || answer == 'y')

+1

謝謝先生。我真的不知道那裏是否存在一個合乎邏輯的'或'運算符。毋庸置疑,事情現在起作用。盡我所能給你答案。 – h3half

2

的問題是,你正在使用的comma operator而不是 「或」 運算符,如邏輯,或者||

維基百科:

在C和C++編程語言中,逗號操作者 (令牌表示,)是評價其 第一個操作數,並丟棄結果的二進制運算符,然後評估第二個 操作數並返回此值(和類型)。逗號運算符具有任何C運算符的最低優先級 ,並充當序列點。 (強調)

2

它的逗號操作符的財產只返回第二個操作數(它執行兩個操作數雖然)。考慮下面的代碼:

int main() { 
    int i=1, j=2, k=3; 
    int l= (i,cout<<"print; ",j,k); 
    cout << l; 
} 

由於逗號運算符,輸出是'print; 3' 。 因此,請儘量避免在您的代碼中使用逗號運算符,並且如上所述,請使用邏輯運算符(||)。