C++ 计算一个数的幂

C++ 计算一个数的幂,c++,c,C++,C,问题: 当进行5^2或5的任意倍数的幂运算时,输出实际值为-1 否则,对于其他数字,其输出是正确的。如果要使用循环手动计算数字的幂,可以这样做 total=a; for(int i=1;i<=b;i++) total=pow(a,b); 注意,这只适用于正整数指数。为什么不在循环中使用i?也许你可以不使用上述循环?你的循环只是将相同的东西b分配了几次。阅读。你没有显示a和b的来源,也没有显示实际输出值的来源,也没有给出最小的可编译示例来说明错误。使用乘法或pow函数进行

问题: 当进行5^2或5的任意倍数的幂运算时,输出实际值为-1
否则,对于其他数字,其输出是正确的。

如果要使用循环手动计算数字的幂,可以这样做

  total=a;
  for(int i=1;i<=b;i++)
     total=pow(a,b);

注意,这只适用于正整数指数。

为什么不在循环中使用i?也许你可以不使用上述循环?你的循环只是将相同的东西b分配了几次。阅读。你没有显示a和b的来源,也没有显示实际输出值的来源,也没有给出最小的可编译示例来说明错误。使用乘法或pow函数进行迭代。选择一个。5^2的输出仍具有相同的值problem@VishnuSingh,这个节目怎么能与OP的节目大致相当?@LightnessRacesinOrbit我在尝试OP想要做的事情。他们目前的密码根本不起作用,所以我试着用我的精神力量来写他们想要写的东西。如果允许他们简单地使用std::pow函数,他们就可以完成了,所以我采用了乘法方法。@Cyber:据我所知,他使用的是std::pow函数,并误解了结果。如果他是自己写的,那么我们就看不到,所以我们只能结束这个问题
long power(long base, long exp)
{
    long total = 1;
    for(long i = 0; i < exp; ++i)
    {
        total *= base;
    }
    return total;
}
int main()
{
    long base = 5;
    long exp = 3;
    long answer = power(base, exp);
    std::cout << answer << std::endl;
}
125