1

嗨,我在 c 中尝试了一个代码,并考虑到以下代码行中的所有变量都是“long long int”,

钱=(钱% 1000000007)+(((2*pow(abs(a[i]-a[j]),k))%1000000007) % 1000000007);

我收到一个错误,指出

error: invalid operands to binary % (have 'double' and 'int') money=(money % 1000000007)+(((2*pow(abs(a[i]-a[j]),k))%1000000007))) % 1000000007); ^

我不明白这种情况下的错误是什么意思,因为我没有使用双精度。我能得到一个简短的解释吗?

4

2 回答 2

4

% 是一个整数运算符, pow() 返回一个双精度值。因此,您可能需要使用 fmod 或 fmodf 或将所有内容转换为 int。

money=(money % 1000000007)+(((2*(long long int)pow(abs(a[i]-a[j]),k))%1000000007))) % 1000000007);
于 2016-09-16T12:38:40.337 回答
0

你的问题是战俘。如果您查看http://www.cplusplus.com/reference/cmath/pow/,您会发现无论您给它什么类型,它都会返回浮点数或双精度数。

尝试将 pow 的结果转换为 int

于 2016-09-16T12:42:56.310 回答