C语言中void和float函数之间的区别

我正在上Udemy C课程,并且对C中的函数产生了一些疑问。它的其中一项练习是关于使用函数进行温度转换(摄氏,F和K)的,而我的第一个念头是:

void CF(){
    float temp1, temp2;

    printf("Escribe que temperatura quieres convertir a Fahrenheit: ");
    scanf("%f", &temp1);

    temp2 = (temp1 * 1.8) + 32;

    printf("La temperatura en Fahrenheit es: %f", temp2);
}

但是解决的练习使用:

float fahrenheit(float C){
    float F=0;
    F = (9*C)/5 + 32;
    return F;
}

在通过功能介绍的同时,通过“ int main”程序输入数据。

我的问题是:  -最好通过int主代码或函数引入数据?  -为什么他使用“浮动”功能而我使用“无效”功能并且在两种情况下都能正常工作?

无论如何,我的代码都可以,但是我想知道什么更好,为什么。

在此先感谢您,请原谅我的英语。

评论
  • Ling6
    Ling6 回复

    函数的目的是封装常用的计算。如果将其编码为返回值,则无论何时要打印结果,都可以在更大的程序中随时调用它。因此,第二个功能更加可重用。

    尽管编写该函数的方式没有错,但它假设您坐在键盘旁输入值,并且只想查看转换结果。

    现在,假设您编写了一个工具,该工具需要从摄录表中获取摄氏温度列表,并希望将其全部转换为华氏温度。您的函数在这里不起作用,但是第二个版本可以与包装一起使用,以从电子表格中读取摄氏度值,调用该函数,然后将转换后的值放在其他位置。

    通常,将功能的功能保持在最低限度是一个好的设计原则,以便可以在更多不同的情况下使用它。

  • yautem
    yautem 回复
    我的问题是:-最好通过int主代码或函数引入数据? -为什么他使用“浮动”功能而我使用“无效”功能并且在两种情况下都能正常工作?

    最好使用后者(返回float的函数)。

    为什么?

    因为这使代码更可重用。

    您的函数可能运行良好,但是如果您只想在没有用户输入的情况下从华氏转换为C,该怎么办?

    基本上,您的功能是:

    • 打印到控制台
    • 扫描用户输入
    • 进行实际转换
    • 输出结果

    因此,您会看到,在第一个函数中,您所做的不仅仅是转换。