gpt4 book ai didi

c - C 中的函数警告

转载 作者:太空宇宙 更新时间:2023-11-04 01:09:49 25 4
gpt4 key购买 nike

大家好,我有三个函数,我收到了 4 个警告...!!

第一个是这个

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 已设置但未使用...!!但实际上我正在使用变量 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;
}
}
}
}

为此我知道变量 one 可以被单元化使用..!!但是它被初始化了..!

你能告诉我这些功能有什么问题吗...??

提前致谢

最佳答案

在您的第一个函数中,您设置(分配)x,但您从未读取它,因此您没有使用它……您只是通过写入它来浪费 CPU 周期。 (另请注意,因为您将其索引为 i+1,所以您写入的内容超出了为其分配的空间)。

在第二个函数中,您对这些变量的初始化是在条件 block 中。您可以看到(也许?我没有验证)在所有情况下它们都已初始化,但您的编译器并不那么聪明。

在您的第三个函数中,似乎可以在未首先初始化的情况下引用 one

关于c - C 中的函数警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15200749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com