C++中的电源功能

Power function in C++

本文关键字:功能 电源 C++      更新时间:2023-10-16

我正在玩一个幂函数的实现:

#include <iostream>
using namespace std;
int pow(int b, int e)
{
  int result;
  if (e == -1 && b != 0)
  {
    cout << "b = " << 1/b << endl;
    return 1/b;
  }
  else if (b != 0 && e != 0)
  {
    //int e_int(int (e));
    bool e_bool(e < 0);
    e = (e_bool*-e + !e_bool*e);
    result = b = pow(b, -e_bool)*(b*!e_bool + +e_bool);
    cout << endl << ""result" = " << result << " " << e << endl;
    for(int i = 1; i < e; i += 1)
    {
      result *= b;
    }
    return result;
  }
  else if (e != 0 && b == 0)
  {
    return 0;
  }
  else if (e == 0 && b != 0)
  {
    return 1;
  }
  else if (b == 1)
  {
    return 1;
  }
  else if (e == 1)
  {
    return b;
  }
  else
  {
    cout << endl << "Error";
    return -1;
  }
}
int main ()
{
  cout << endl << pow(-2, -1);
  return 0;
}

输出为:

b = 0
0

为什么 b 设置为 0?

整数除法只能产生整数结果。 您的程序会导致以下行:

cout << "b = " << 1/b << endl;

要运行,如果b是大于 1 的任何整数,则结果将为 0

我不会说b设置为 0。在你的函数中,你有这样的语句:

cout << "b = " << 1/b << endl;

由于b是整数,因此1/b整数除法,值最终为0