Ubuntu 应用程序中的 Cmath 库出现 pow() 错误

Ubuntu 应用程序中的 Cmath 库出现 pow() 错误

我在 UBUNTU 应用程序上使用 cmath 库编译了一个用于提高幂的代码,但它显示了一个错误。

这是截图

答案1

该错误是因为您尝试将 (整数) 模运算符与(其%返回值为) 一起使用。powdouble

例如给定

$ 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)]

相关内容