为什么 main() 函数没有 return 浮点值?
Why doesn't main() function return float value?
我正在用 C 编写一个程序,它应该在调用函数 averagerOfFiveFloats()
之后 return 浮点值 3.2058
。问题是当代码编译并且 IDE 打开可执行文件时,值 returned 是 1067450368
。为什么会这样?我确保变量类型是正确的,并且两个函数都有一个 float return 类型。
程序在main函数中取5个float值,然后在main函数中调用averagerOfFiveFloats()
函数。函数 averagerOfFiveFloats()
获取五个浮点值,将它们加在一起,将总数除以 5,然后 return 得到值。
这是我的代码:
#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;
}
您的代码存在问题,您正试图从 main
.
return a float
函数 main 只能 return 一个 int
.
相反,您可以将结果打印为
printf("%f", averagerOfFiveFloats(a, b, c, d, e));
这会产生正确的结果。
此外,您的数字的实际平均值不能是 16.029
,因为所有数字都小于该数字。
main
必须 return 一个 int
而不是浮点数。编译时您可能会收到警告。警告一般是C中的错误,所以你应该争取没有警告的代码。
因此您看到的是您的 float
被静默转换为 int
。如果你这样做 printf("%f", averageOfFive(a, b, c, d, e))
你会看到你期望的输出。
这是正确的代码!你不能 return 在 main 中浮动 :)
我还更改了语法 read/understand :)
#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);
}
我正在用 C 编写一个程序,它应该在调用函数 averagerOfFiveFloats()
之后 return 浮点值 3.2058
。问题是当代码编译并且 IDE 打开可执行文件时,值 returned 是 1067450368
。为什么会这样?我确保变量类型是正确的,并且两个函数都有一个 float return 类型。
程序在main函数中取5个float值,然后在main函数中调用averagerOfFiveFloats()
函数。函数 averagerOfFiveFloats()
获取五个浮点值,将它们加在一起,将总数除以 5,然后 return 得到值。
这是我的代码:
#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;
}
您的代码存在问题,您正试图从 main
.
float
函数 main 只能 return 一个 int
.
相反,您可以将结果打印为
printf("%f", averagerOfFiveFloats(a, b, c, d, e));
这会产生正确的结果。
此外,您的数字的实际平均值不能是 16.029
,因为所有数字都小于该数字。
main
必须 return 一个 int
而不是浮点数。编译时您可能会收到警告。警告一般是C中的错误,所以你应该争取没有警告的代码。
因此您看到的是您的 float
被静默转换为 int
。如果你这样做 printf("%f", averageOfFive(a, b, c, d, e))
你会看到你期望的输出。
这是正确的代码!你不能 return 在 main 中浮动 :)
我还更改了语法 read/understand :)
#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);
}