C ++打印函数的结果?

时间:2017-11-16 02:54:56

标签: c++ c

为什么当我从我的函数打印结果时,它打印出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;
}    

2 个答案:

答案 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 ...", ...);
            ^~~

然后输出应该是正确的。