我一直在尝试使用此代码:
if (iteration % pow(256.0, 7) == 0) {
在我的一个程序中,但错误控制台说:
错误C2297:'%':非法,右操作数的类型为'double'
如何解决此错误?
答案 0 :(得分:2)
正如您在标题中所述,答案是将结果转换为整数:
if (iteration % static_cast<int>(pow(256.0, 7)) == 0)
答案 1 :(得分:2)
由于pow(256.0, 7)
可以表示为整数,因此您应该将其定义为适当的const,例如。
const int64_t pow_256_7 = 1LL << (8 * 7); // 256^7
然后像这样进行测试:
if ((iteration % pow_256_7) == 0)
答案 2 :(得分:0)
iteration % pow(256.0, 7)
此处pow
返回double
。但%
无法应用于double
(或float
)类型。
%
只能应用于int
,short
,char
等整体类型。
如何解决此错误?
你想要达到什么目的?也许你可以这样做:
iteration % static_cast<__int64>(pow(256.0, 7))
或者只是这个:
const __int64 value = 256ULL * 256 *256 *256 *256 *256 *256;
if ( iteration % value == 0 )