gpt4 book ai didi

控制可能到达 C 中非 void 函数的末尾

转载 作者:行者123 更新时间:2023-11-30 21:41:47 26 4
gpt4 key购买 nike

我遇到了这个错误,但无法调试它

helpers.c:136:1: error: control may reach end of non-void function

IDE 在最后一行中说}

这是我的代码

// Calculates frequency (in Hz) of a note
int frequency(string note)
{
// TODO
if (strlen(note) == 2)
{
if (note[0] == 'A')
{
int freq = round(440 * (pow(2, (((int) note[1]) - 52))));
return freq;
}
else
{
if (note[0] == 'A')
{
if (note[1] == '#')
{
int freq = round(466 * (pow(2, (((int) note[2]) - 52))));
return freq;
}
else if (note[1] == 'b')
{
int freq = round(415 / (pow(2, (((int) note[2]) - 52))));
return freq;
}
}
}
}

最佳答案

您需要返回所有代码路径。让我们看一下您的示例:

int frequency(string note)
{
// TODO
if (strlen(note) == 2)
{
if (note[0] == 'A')
{
int freq = round(440 * (pow(2, (((int) note[1]) - 52))));
return freq;
}
// return what?
else
{
if (note[0] == 'A')
{
if (note[1] == '#')
{
int freq = round(466 * (pow(2, (((int) note[2]) - 52))));
return freq;
}
else if (note[1] == 'b')
{
int freq = round(415 / (pow(2, (((int) note[2]) - 52))));
return freq;
}
// return what?
}
// return what?
}
}

一种选择是在代码块的开头声明一个带有默认值的freq。然后,您可以根据需要的任何条件修改该值,然后在函数末尾返回它。例如:

int frequency(string note)
{
int freq = 0;
// TODO
if (strlen(note) == 2)
{
if (note[0] == 'A')
{
freq = round(440 * (pow(2, (((int) note[1]) - 52))));
}
else
{
if (note[0] == 'A')
{
if (note[1] == '#')
{
freq = round(466 * (pow(2, (((int) note[2]) - 52))));
}
else if (note[1] == 'b')
{
freq = round(415 / (pow(2, (((int) note[2]) - 52))));
}
}
}

return freq;
}

关于控制可能到达 C 中非 void 函数的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49457420/

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