Неверный операнд типов ‘long long int’ для двоичного ‘оператора%’

я нахожусь в C ++, и я получаю эту ошибку:

bool comprovarCodi(long long num, int DC){
bool codi_correcte;
int i=0, suma_senars=0, suma_parells=0, suma_total=0, desena_superior, DC_calculat, cont=0;
while(num!=0){
num=num/10;
cont++;
i++;
}
if(cont==12){
for(int j=1; j<12; j=j+2){
suma_senars=suma_senars+num%pow(10,j);

Я не знаю почему, я считаю, что «num» является целым числом, поэтому я могу использовать оператор «%».

Кто-нибудь знает почему это не получается?

Спасибо

0

Решение

Не использовать pow для такого рода вещей.

long long pow_ten = 10;
for(int j=1; j<12; j=j+2)
{
suma_senars=suma_senars+num%pow_ten;
pow_ten *= 100;
}

Мало того, что это будет быстрее, это будет также правильно рассчитывать, а не pow который вполне может использовать что-то вроде exp(log(x) * y) вычислять x ** y — и, следовательно, не всегда получается точное число, которое вы хотели — особенно если вы приводите его обратно к целому числу.

1

Другие решения

Вы должны привести к Int первым
suma_senars = suma_senars + num % (int)pow(10,j);
лучше:
suma_senars += num % (int)pow(10,j);
яснее:
suma_senars += num % ( (int)pow(10,j) );

0

По вопросам рекламы [email protected]