2013-11-05 36 views
0

我正在嘗試做一個簡單的while while循環,其中除'y'或'n'以外的任何字母都是無效的,並且循環重複。有誰知道爲什麼這個循環總是評估爲false?即使輸入了有效的字符?字符比較總是假的c

char user_response[2]; 

do { 
    printf("\nDo you want to process another range (y or n): "); 
    scanf("%1s", user_response); 
    user_response[0] = tolower(user_response[0]); 
} 
while (user_response[0] != 'y' || user_response[0] != 'n'); 

return user_response[0]; 
+1

如果答案是「y」,那麼它不等於「n」,反之亦然。所以,你的任何一個或兩個表達式都將是真實的。 – paddy

+1

你的循環測試一個假想字符,在同一時間是'y'和'n'* *。它不會接受任何不是'y'的東西,它也*不會接受任何不是'n'的東西。 – hobbs

回答

5

你應該改變||到& &。

+0

哇。我怎麼沒有看到這一點。萬分感謝。 –

4

要使用「& &」(和)而不是「||」 (要麼)。

這裏有兩個測試:「答案不等於y」,「答案不等於n」。由於答案不能同時是「y」和「n」,至少其中一個測試總是如此,並且通過使用「或」你的測試總是會評估爲真。

+0

這是比較深入的。但尼姆先回答。感謝您的解釋,雖然:) –