Привет, ребята, у меня есть три функции, для которых я получаю 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);
}
Для этого один компилятор предупреждает меня тх переменные й имеет значение, но не используется ... !! Но на самом деле я использую переменную 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_m и 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
Возможно, вы также должны вставить фактические предупреждения компилятора, что, вероятно, облегчит людям помощь в понимании того, что они означают. – Christoffer
Вы инициализируете переменные внутри условий. Компилятор не может доказать, что условие когда-либо было выполнено (не так ли?) Просто инициализируйте их вне любого условия или цикла, чтобы быть в безопасности. Что касается предупреждения неиспользуемой переменной, я не вижу, где вы его используете. –