我是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
。
编辑
请注意,由于hat
是long int
,如果它大于int
的最大值,则for
循环将变成无限循环,因为i
是int
。
据此(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;
}