C 我的函数一直返回0而不是实际计算的返回值?

C 我的函数一直返回0而不是实际计算的返回值?,c,function,C,Function,我不明白为什么我的toCelsius值总是返回0。我的toFarenheit函数工作得很好。此外,该程序通过让用户输入负整数值来终止;这是家庭作业的一部分,所以忽略这一部分 在函数声明中,它表示int-toCelsiusdouble-value,但在main中打开函数时,结果为results=toCelsiusintValue。然后,计算操作与整数一起使用,5/9可能被视为0,这将始终使返回值也为0。尝试将5/9与1进行交换,看看是否得到与0不同的值。如果是这种情况,您已发现错误。尝试使用: #

我不明白为什么我的toCelsius值总是返回0。我的toFarenheit函数工作得很好。此外,该程序通过让用户输入负整数值来终止;这是家庭作业的一部分,所以忽略这一部分

在函数声明中,它表示int-toCelsiusdouble-value,但在main中打开函数时,结果为results=toCelsiusintValue。然后,计算操作与整数一起使用,5/9可能被视为0,这将始终使返回值也为0。尝试将5/9与1进行交换,看看是否得到与0不同的值。如果是这种情况,您已发现错误。

尝试使用:

#include <stdio.h>

//function prototypes
const double fiveNinths = 5 / 9;

int toCelsius(double value) 
{
    return ((value - 32) * (fiveNinths));
}

int toFarenheit(double value) 
{
    return (value * 1.8) + 32;
}


int main (void) 
{
    int intValue, menuSelect; 
    double results;
    intValue = 1;

    while (intValue > 0) 
    {
        printf( "enter a positive integer: \n");
        scanf("%d", &intValue);

        if (intValue > 0) 
        {
            printf("Enter 1 to convert to Farenheit, enter 2 to convert to Celsius: \n");
            scanf("%d", &menuSelect);

            if (menuSelect == 1)
            {
                results = toFarenheit(intValue);
                printf("%d degrees to Farenheit is %d\n", intValue, results);
            }
            else if (menuSelect == 2)
            {
                results = toCelsius(intValue);
                printf("%d degrees to Celsius is %d\n", intValue, results);

            }
            else
            {
                printf("invalid menu item, please input only 1 or 2\n");
            }
        }
    }

    return 0;
}
通过此行:double results=toCelsiusdouble value,该方法应该返回一个double值,而不是一个ineger值


当您仅使用9或5时,实际上是整数除法,因此它返回整数值0,而不是正确的双精度值。

请阅读如何提供。您的问题缺少任何输入/输出值来支持您的声明。请正确格式化您的代码。提示:C中的5/9是什么?调试一次,他就会知道。这个问题以前被问过几千次。Celsius/Farenheit程序是一个经典的例子,当教师想要教授浮点数是如何工作的。请在发布问题之前做一些研究。请看:这不是Python,函数中的类型不会根据您对它的调用而改变。true@quentin这就是问题的根源,正如我在帖子中提到的,如果您能正确地将其红色化的话。您已经接近了答案:5/9是整数除法,因为5和9都是整数。但这与传递给函数的参数类型无关。
const double fiveNinths = 5.0 / 9.0;
double toCelsius(double value) {
    return ((value - 32.0) * (fiveNinths));
}