Библиотека Cmath по ошибке приложения Ubuntu для головы ()

Я скомпилировал код приложения UBUNTU с помощью cmath библиотекой для повышения полномочий, но это показывает ошибку.

heres a screenshot

0
задан 23 January 2019 в 03:45

1 ответ

Ошибка состоит в том, потому что Вы пытаетесь использовать (целочисленный) оператор по модулю % с возвращаемым значением 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 флаг)]

1
ответ дан 26 October 2019 в 11:52

Другие вопросы по тегам:

Похожие вопросы: