Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 作为一名C++;_C++ - Fatal编程技术网

C++ 作为一名C++;

C++ 作为一名C++;,c++,C++,我是新手,所以如果我问一些愚蠢的问题,请原谅我。 我试图手动构建一个幂函数,我将其命名为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; }

我是新手,所以如果我问一些愚蠢的问题,请原谅我。 我试图手动构建一个幂函数,我将其命名为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){
长整数总计{1};

对于(inti{1};i我将您的代码更改为:

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;
}
long-int-pow_1(long-int-original,long-int-hat){
长整数总计{1};

对于(int i{1};i而言,错误消息是合理地自解释的,并不是通过函数的所有可能路径都返回值。如果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;
}
long-int-pow_1(long-int-original,long-int-hat){
长整数总计{1};

对于(int i{1};我请复制/粘贴您的代码。当它是图像时,我们无法复制/粘贴代码。您的代码的问题是,如果从未输入
,您将永远不会返回任何内容,因此“并非所有控制路径都返回值”。无论如何,请注意,即使输入了它,它也会在第一次迭代时
返回
,因此如果
hat
以小于
1
的值(零或负)传递到
pow_1
,则您的
for
将不会执行您期望的操作,for循环将被跳过。由于循环后没有返回,因此您在没有返回有效值的情况下运行函数结尾,这是未定义的行为。请在此处共享您的代码,以便我们可以帮助您,您的标题是毫无价值的。我想建议一些反映您问题本质的内容,例如“并非所有控制路径都返回值”。你可以用你的问题来解决这个问题。请看一下。非常感谢你的修复和给我提示。我会努力做得更好!@FantasticMrFox,但我相信这是出于教育目的。我认为如果hat为0,函数仍然返回total,它的值为1,而不是之前启动的未定义结果?@ShawnNguyen否返回值已设置,函数在执行return语句时结束。当hat为0时,没有执行return语句,因此结果未定义