你好家伙我有三个功能,我得到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