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

时间:2018-07-20 06:38:01

标签: 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);
}

2 个答案:

答案 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


编辑

请注意,由于forhat,如果它大于long int的最大值,则您的int循环将成为无限循环 fori

根据this (limits.h)

  • 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;
}