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
将 ||
切换为 &&
。目前,如果 answer
是 y
,if
和 while
条件都将计算为 ('y' != 'y') || ('y' != 'n')
或 (false) || (true) = true
。摆脱 while 循环的唯一方法是让 answer
以某种方式同时等于 y
和 n
。
在下面的代码中,无论我做什么,它都会永远循环并永远显示 "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
将 ||
切换为 &&
。目前,如果 answer
是 y
,if
和 while
条件都将计算为 ('y' != 'y') || ('y' != 'n')
或 (false) || (true) = true
。摆脱 while 循环的唯一方法是让 answer
以某种方式同时等于 y
和 n
。