定义为整数,但编译器认为其中一个是双精度

Defined as integers but the compiler think one of them is double?

本文关键字:双精度 一个 整数 编译器 定义      更新时间:2023-10-16

这是我写的代码,虽然里面没有双变量,但g++抛出了这个警告:"类型' double '和' int '的无效操作数为二进制' operator% 'C = pow(m,e)%n;"这是怎么回事?"

#include <iostream>
#include <boost/dynamic_bitset.hpp>
#include <math.h>

using namespace std;
int main()
{
boost::dynamic_bitset <> seq(5);
int key = 0;
int p = 0, q = 0;
int n = 0;
int f = 0;
int d = 0;
int e = 0;
int c = 0;
int m = 0;
int t = 0;
cout << "Enter a sequence of bits: ";
cin >> seq;
for (unsigned int i = 0; i <  seq.size(); i++)
{
 if ( seq[i]==1)
  {
   d = d + pow(2,i);
   cout << d << "n";
  }
}
//cout << key << "n";
cout << "Enter p: ";
cin >> p;
cout << "Enter q: ";
cin >> q;
cout << "Enter m: ";
cin >> m;
n = p*q;
f = (p-1)*(q-1);
for ( int k = 0; t < 1; k++)
 {
  if ((1+k*f)%d==0)
   {
    t = 2;
    e = (1+k*f)/d;
   }
 }
cout << "E is: " << e << "n";
c = pow(m,e)%n;
cout << "C is: " << c << "n";
cin.get();
return 0;
}

函数pow声明为

double pow (double base, double exponent)
相关文章: