すべての変数をintのままにしておくと、32になります。除算は32.5になるはずなので、すべてを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になります... printf関数ですべてをdoubleに変更し、%dを%fに変更すると、ゼロになり、理由がわかりません...