Я скомпилировал код приложения UBUNTU с помощью cmath библиотекой для повышения полномочий, но это показывает ошибку.
Ошибка состоит в том, потому что Вы пытаетесь использовать (целочисленный) оператор по модулю %
с возвращаемым значением pow
(который имеет тип double
).
Напр. данный
$ cat pow.cpp
#include <iostream>
#include <cmath>
int main(void)
{
int i = 2;
int num = 345;
num = num % pow(10,i);
std::cout << "num: " << num << std::endl;
}
затем
$ g++ -o pow pow.cpp
pow.cpp: In function ‘int main()’:
pow.cpp:9:13: error: invalid operands of types ‘int’ and ‘double’ to binary ‘operator%’
num = num % pow(10,i);
~~~~^~~~~~~~~~~
Если Вы явно бросаете возвращаемое значение к int
num = num % (int)pow(10,i);
это будет "работать" - но необходимо будет убедиться, что это дает Вам намеченный результат:
$ g++ -o pow pow.cpp
$ ./pow
num: 45
[Обратите внимание, что Вы не должны явно связываться libm
при использовании g++
с тех пор - в отличие от этого, gcc
- это связано по умолчанию (т.е. если Вы не добавляете -nostdlib
флаг)]