为什么main()函数不返回float值?

时间:2017-09-21 04:38:52

标签: c return main

我正在用C编写一个程序,它应该在调用函数3.2058之后返回浮点值averagerOfFiveFloats()。问题是当代码编译并且IDE打开可执行文件时,返回的值为1067450368。为什么会这样?我确保变量类型是正确的,并且两个函数都有一个浮点返回类型。

程序在main函数中获取五个浮点值,然后在main中调用函数averagerOfFiveFloats()函数。函数averagerOfFiveFloats()获取五个浮点值,将它们相加,将总数除以5,然后返回值。

这是我的代码:

#include <stdio.h>

float a, b, c, d, e;

float averagerOfFiveFloats(float num1, float num2, float num3, float num4, 
float num5);

float main (void) {

    a = 1.25;

    b = 4.45;

    c = 3.45;

    d = 1.11;

    e = 5.769;

    return averagerOfFiveFloats(a, b, c, d, e);

}


float averagerOfFiveFloats(float num1, float num2, float num3, float num4, 
float num5) {

    float addition = 0;

    addition = num1 + num2 + num3 + num4 + num5;

    float divider = 0;

    divider = addition / 5;

    return divider;


}

3 个答案:

答案 0 :(得分:1)

您的代码存在的问题是您尝试从float返回main

函数main只能返回int

相反,您可以将结果打印为

printf("%f", averagerOfFiveFloats(a, b, c, d, e));

并产生正确的结果。

此外,您的号码的实际平均值不能为16.029,因为所有数字都小于此值。

答案 1 :(得分:1)

main必须返回int而不是浮点数。编译时,您可能会收到警告。警告通常是C中的错误,因此您应该努力获得无警告代码。

因此,您看到的是float被静默转换为int。如果你printf("%f", averageOfFive(a, b, c, d, e)),你会看到你期望的输出。

答案 2 :(得分:1)

这是正确的代码!你不能在main中返回一个浮点数:)

我也改变了语法,更容易阅读/理解:)

#include <stdio.h>

float averagerOfFiveFloats(float num1, float num2, float num3, float num4,
                           float num5) {
  float addition = 0;
  float divider = 0;

  addition = num1 + num2 + num3 + num4 + num5;
  divider = addition / 5;

  return divider;

}

int     main (void) {

  float a = 1.25;
  float b = 4.45;
  float c = 3.45;
  float d = 1.11;
  float e = 5.769;

  float divider = averagerOfFiveFloats(a, b, c, d, e);
  printf("divider = %f\n", divider);
  return (0);
}