如果我将所有变量保留为int,则我得到32分。该分区应该给我32.5,所以我认为将所有内容更改为double将会执行此操作,但它只是让我为零。 ..将int更改为double将我的结果更改为零
这里是代码(INT一切):
#include <stdio.h>
#include <stdlib.h>
void sommeTableau(int tableau[], int tailleTableau, int *x, int *average);
int main(int argc, char *argv[])
{
int tableau[4] = {30, 50, 50};
int *x = 0;
int *average = 0;
const int tailleTab = 4;
sommeTableau(tableau, tailleTab, &x, &average);
printf("The average is %d\n", average);
return 0;
}
void sommeTableau(int tableau[], int tailleTableau, int *x, int *average)
{
int i = 0;
for (i = 0 ; i < tailleTableau ; i++)
{
*x = *x + tableau[i];
}
*average = *x/tailleTableau;
}
所以此工程,并给了我32 ......现在,如果我改变一切将翻一番,%d到%F在printf函数,它给我零,我不明白为什么...
无需做任何事情,但'average'双,除了铸造无论是股息或除数。 – chris
你没有从你的编译器使用这段代码得到任何警告? – Naytzyrhc
不,我没有得到任何警告..我应该吗? –