作为一个C++新手,我遇到了麻烦



我是stackoverflow的新手,所以如果我问一些愚蠢的问题,请容忍我。我正在尝试手动构建一个幂函数,我将其命名为pow_1。然而,我遇到了一个错误,说"pow_1不是所有的控制路径都返回一个值。"这是我的代码:

long int pow_1(long int original, long int hat) {
long int total{1};
for (int i{ 1 }; i <= hat; i++) {
return total = total * original;
}
}
int main() {
long int x = 6;
long int y = 2;
std::cout << pow_1(x, y);
}

我会将您的代码更改为:

long int pow_1(long int original, long int hat) {
long int total{1};
for (int i{ 1 }; i <= hat; i++) {
/*return */total = total * original;
}
// return here instead
return total;
}

所以,在第一次for迭代时,您将始终使用return,而不是return


编辑

请注意,由于hatlong int,如果它大于int的最大值,则for循环将变成无限循环,因为iint

据此(limits.h(:

  • INT_MAX = 32767(取决于系统和库实现(
  • LONG_MAX = 2147483647(取决于系统和库实现(

因此,如果hat是例如33000,则循环将永远递增i,因为当i达到32767并且我们递增它时,它将变成-32767,然后是-32766-32765,并且以这种方式继续递增。

错误消息是不言自明的,并不是通过函数的所有可能路径都返回值。如果hat为0,则不会执行任何返回语句,并且函数将具有未定义的结果。大概预期的代码是:

long int pow_1(long int original, long int hat) {
long int total{1};
for (int i{ 1 }; i <= hat; i++) {
total = total * original;
}
return total;
}

相关内容

最新更新