2013-11-05 2 views
0

'y'또는 'n'이외의 문자가 유효하지 않고 루프가 반복되는 간단한 do while 루프를 수행하려고합니다. 누구도 왜이 루프가 항상 false로 평가되는지 알고 있습니까? 유효한 문자가 입력 된 경우에도?char 비교 항상 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"이 될 수 없으므로 적어도 하나의 테스트는 항상 true이고 "or"을 사용하여 while 테스트는 항상 true로 평가됩니다.

+0

자세한 내용입니다. 그러나 님이 먼저 대답했습니다. 비록 설명을 주셔서 감사합니다 :) –