如果我將所有變量保留爲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
不,我沒有得到任何警告..我應該嗎? –