我是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);
}
答案 0 :(得分:2)
我将您的代码更改为此:
{
"presets": [
[
"env",
{
"modules": false
}
]
],
"env": {
"test": {
"presets": [
[
"env"
]
]
}
}
}
因此,您将始终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;
}
进行某些操作,并且在第一次return
迭代时也不会return
。
请注意,由于for
是hat
,如果它大于long int
的最大值,则您的int
循环将成为无限循环 for
是i
。
int
(取决于系统和库的实现)INT_MAX = 32767
(取决于系统和库的实现)因此,如果LONG_MAX = 2147483647
例如hat
,该循环将永远递增33000
,因为当i
到达i
并递增时,它将依次为32767
和-32767
,{ {1}},并以这种方式继续增长。
答案 1 :(得分:0)
该错误消息是可以自我解释的,并非通过函数的所有可能路径都返回值。如果hat为0,则不会执行return语句,并且您的函数将具有未定义的结果。大概的预期代码是:
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;
}