c中循环的不需要的结果

unwanted result with loops in c

在下面的代码中,无论我做什么,它都会永远循环并永远显示 "syntax error"。

此代码需要检查答案是否既不是 'y' 也不是 'n'。如果再次询问答案,然后如果回答 'y' 它将再次循环所有的函数 如果答案是 'n' 它应该什么都不做...

char answer = ' ';
int round = 0;
do
{
    round = chooseLevel();
    guess(round);
    while ((answer != 'y') || (answer != 'n'))
    {
        printf("\nWould you like to play again? (y/n): ");
        answer  = getch();
        putch(answer );
        printf ("\nchar is %c\n", answer );
        if ((answer != 'y') || (answer != 'n'))
        {
            printf("Syntax Error");
        }
    }
}
while (answer  == 'y');

条件应该是 && 而不是 || :

(answer != 'y') && (answer != 'n')

answer 不能同时为 'y' 和 'n',因此 answer != 'y'answer != 'n' 都为真。在 || 的情况下,整个语句将变为 true.

True || False => True

|| 切换为 &&。目前,如果 answeryifwhile 条件都将计算为 ('y' != 'y') || ('y' != 'n')(false) || (true) = true。摆脱 while 循环的唯一方法是让 answer 以某种方式同时等于 yn