Недопустимые операнды типов int и double to binary 'operator%'
После компиляции программы я становлюсь ниже ошибки
invalid operands of types int and double to binary 'operator%' at line
"newnum1 = two % (double)10.0;"
Почему это так?
#include<iostream>
#include<math>
using namespace std;
int main()
{
int num;
double two = 1;
double newnum, newnum1;
newnum = newnum1 = 0;
for(num = 1; num <= 50; num++)
{
two = two * 2;
}
newnum1 = two % (double)10.0;
newnum = newnum + newnum1;
cout << two << "\n";
return 0;
}
Ответы
Ответ 1
Потому что %
определяется только для целых типов. То, что оператор модуля.
5.6.2 стандарта:
Операнды * и/должны иметь тип арифметики или перечисления; операнды% должны иметь интегральный или перечисляемый тип. [...]
Как указал Оли, вы можете использовать fmod()
. Не забудьте включить math.h
.
Ответ 2
Потому что %
работает только с целыми типами. Возможно, вы хотите использовать fmod()
.
Ответ 3
Да. % для двойного типа не определен. То же самое верно и для побитовых операторов, таких как "&, ^, |, ~, <, → ".