答案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
)]