为什么当我从我的函数打印结果时,它打印出0?我尝试使用原型,并跟随我老师的一个例子,但没有骰子。在这里很丢失。
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
double energie_cinetique(double m, double v) {
double resultat;
resultat = 1 / 2 * m * (v * v);
return resultat;
}
int main(void) {
double reponse;
reponse = energie_cinetique(10, 5);
printf("Energie pour m=10 kg et v=5 m/s: %d", reponse);
system("pause");
return EXIT_SUCCESS;
}
答案 0 :(得分:5)
1/2 = 0的整数除法,因此你的结果将为零。
将一半更改为0.5,你应该是数学部分的黄金(同样,乘法更快,所以尽可能使用它而不是除法)。
printf中的%d用于int类型,而使用%f代替double。
之后它应该有用。
答案 1 :(得分:1)
这里有两个错误:
首先,1 / 2 == 0
,显然是因为它们是整数。改为
1.0 / 2.0 * m *(v * v);
// OR
0.5 * m * (v * v);
其次,%d
是有符号整数的格式说明符。使用它来打印双精度FP是UB。你的编译器应该已经警告过这个。你应该写
printf("... %lf ...", ...);
^~~
然后输出应该是正确的。