C If或语句在应该返回true时未返回true
我试图编写一个函数,根据用户输入将开尔文转换为法伦海特摄氏度,我希望它在用户输入无效输入时不断提示用户,但不管输入是什么,它都会打印“无效输入”,循环重复,即使我打印y值来测试它,它返回“C”或“F” (ReadChar()只使用scanf并返回字符)C If或语句在应该返回true时未返回true,c,if-statement,C,If Statement,我试图编写一个函数,根据用户输入将开尔文转换为法伦海特摄氏度,我希望它在用户输入无效输入时不断提示用户,但不管输入是什么,它都会打印“无效输入”,循环重复,即使我打印y值来测试它,它返回“C”或“F” (ReadChar()只使用scanf并返回字符) 请参阅您在while条件中放置的或条件,这将是真的,因为您只能在y中的字符上放置(无论是“C”还是“F”),请尝试&&&在类似的情况下: do { printf("Choose Celsius or Farenheit (
请参阅您在while条件中放置的或条件,这将是真的,因为您只能在y中的字符上放置(无论是“C”还是“F”),请尝试
&&&
在类似的情况下:
do
{
printf("Choose Celsius or Farenheit (F/C): ");
y = ReadChar();
y = toupper(y);
printf("%c", y);
if ((y != 'C') && (y != 'F'))
{
printf("Invalid Input\n");
}
}while ((y != 'C') && (y != 'F'));
return(y);
请参阅您在while条件中放置的或条件,这将是真的,因为您只能在y中的字符上放置(无论是“C”还是“F”),请尝试
&&&
在类似的情况下:
do
{
printf("Choose Celsius or Farenheit (F/C): ");
y = ReadChar();
y = toupper(y);
printf("%c", y);
if ((y != 'C') && (y != 'F'))
{
printf("Invalid Input\n");
}
}while ((y != 'C') && (y != 'F'));
return(y);
你把逻辑颠倒错了。假设您从定义有效输入的
((y=='C')|(y=='F'))
开始,现在您想要反转条件以定义无效输入,您需要将逻辑更改为((y!='C')&&(y!='F'))
(请参见DeMorgans定律)。您错误地反转了逻辑。假设您从定义有效输入的((y=='C')|(y=='F'))
开始,现在您想要反转条件来定义无效输入,您需要将逻辑更改为((y!='C')&&(y!='F'))
(请参见DeMorgans定律)。这是否回答了您的问题?这回答了你的问题吗?您也忘了更改if语句条件您也忘了更改if语句条件