你好傢伙我有三個功能,我得到4個警告......!功能警告在C
第一個是這個
void evaluatearxikos(void)
{
int mem;
int i;
double x[NVARS+1];
FILE *controlpointsarxika;
controlpointsarxika = fopen("controlpointsarxika.txt","r");
remove("save.txt");
for(mem = 0; mem < POPSIZE; mem++)
{
for(i = 0; i < NVARS; i++)
{
x[i+1] = population[mem].gene[i];
}
rbsplinearxiki();
XfoilCall();
population[mem].fitness = FileRead();
remove("save.txt");
}
fclose(controlpointsarxika);
}
對於這一個編譯器警告我THA變量x設置,但不使用...!但實際上我使用變量x ... !!!
第二個功能是這一個...
void elitist(void)
{
int i;
double best,worst;
int best_mem,worst_mem;
best = population[0].fitness;
worst = population[0].fitness;
for(i = 0; i < POPSIZE - 1; i++)
{
if(population[i].fitness > population[i+1].fitness)
{
if(population[i].fitness >= best)
{
best = population[i].fitness;
best_mem = i;
}
if(population[i+1].fitness <= worst)
{
worst = population[i+1].fitness;
worst_mem = i+1;
}
}
else
{
if(population[i].fitness <= worst)
{
worst = population[i].fitness;
worst_mem = i;
}
if(population[i+1].fitness >= best)
{
best = population[i+1].fitness;
best_mem = i+1;
}
}
}
if(best >= population[POPSIZE].fitness)
{
for(i = 0; i < NVARS; i++)
{
population[POPSIZE].gene[i] = population[best_mem].gene[i];
}
population[POPSIZE].fitness = population[best_mem].fitness;
}
else
{
for(i = 0; i < NVARS; i++)
{
population[worst_mem].gene[i] = population[POPSIZE].gene[i];
}
population[worst_mem].fitness = population[POPSIZE].fitness;
}
}
對於這一個,我得到兩個警告,該變量worst_mem和best_mem可在此功能中使用未初始化.. !!但我初始化值給他們兩個..!
而第三個功能是本...
void crossover(void)
{
int mem,one;
int first = 0;
double x;
for(mem =0; mem < POPSIZE; mem++)
{
x = rand()%1000/1000;
if(x < PXOVER)
{
first++;
if(first%2 == 0)
{
random_Xover(one,mem);
}
else
{
one = mem;
}
}
}
}
爲此,我得到的是一個變量,可以使用未初始化.. !!但它已初始化..!
你能告訴我這些功能有什麼問題嗎?
預先感謝您
請注意,額外的感嘆號不會改善您的問題的質量。 – Matthias 2013-03-04 11:46:59
也許你應該粘貼實際的編譯器警告,這可能會讓人們更容易幫助你理解它們的含義。 – Christoffer 2013-03-04 11:47:08
你在條件內初始化你的變量。編譯器無法證明這種情況永遠存在(你能嗎?)只要在任何條件或循環之外初始化它們以確保安全。至於未使用的變量警告,我沒有看到你在哪裏使用它。 – 2013-03-04 11:52:15