gpt4 book ai didi

c - 警告 : Control may reach end of non-void function

转载 作者:行者123 更新时间:2023-11-30 19:57:55 25 4
gpt4 key购买 nike

这是一个递归函数,可将二进制数(以整数数组形式给出)转换为小数。

double binaryToDecimalRecursive(int *binary, int len) {
if (len == 0)
return *binary;
if (len > 0) {
return (binary[0]*pow(2, len))+binaryToDecimalRecursive(binary+1, len-1);
}
}

GCC 编译器向我发出“控制可能到达非 void 函数末尾”警告。

我应该解决什么问题来防止这种情况发生?

最佳答案

从评论中看来,您已将代码更改为这样,对吗?

double binaryToDecimalRecursive(int *binary, int len) {
if (len == 0)
return *binary;
if (len > 0) {
return (binary[0]*pow(2, len))+binaryToDecimalRecursive(binary+1, len-1);
}
if(len < 0) return -1;
}

编译器无法识别它总是遵循这些分支中的至少一个。您可以通过几种方式使其更加明确。这是一种可行的方法:

double binaryToDecimalRecursive(int *binary, int len) {
if (len == 0)
return *binary;
else if (len > 0) { // Added an `else` statement
return (binary[0]*pow(2, len))+binaryToDecimalRecursive(binary+1, len-1);
}
else return -1; // Here too
}

关于c - 警告 : Control may reach end of non-void function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35444526/

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