Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C If或语句在应该返回true时未返回true_C_If Statement - Fatal编程技术网

C If或语句在应该返回true时未返回true

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 (

我试图编写一个函数,根据用户输入将开尔文转换为法伦海特摄氏度,我希望它在用户输入无效输入时不断提示用户,但不管输入是什么,它都会打印“无效输入”,循环重复,即使我打印y值来测试它,它返回“C”或“F”

(ReadChar()只使用scanf并返回字符)


请参阅您在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语句条件