Недопустимые операнды типа «double» и «int» для двоичного «оператора%»

Я пишу программу для своего класса структур управления и пытаюсь ее скомпилировать. Единственная ошибка, по крайней мере единственная ошибка, которую обнаруживает компилятор, — это неверные операнды типов ‘double’ и ‘int’ для двоичного оператора ‘%’. Большая часть программы не включена, так как она слишком длинная и не имеет отношения к этой проблеме, по крайней мере, я не верю.

double maxTotal, minTotal;

cin >> maxTotal >> minTotal;

int addCalc;

static_cast<int>(maxTotal);

if(maxTotal % 2 == 1)
addCalc = minTotal;
else
addCalc = 0;

5

Решение

Ваш static_cast ничего не делает. Что вы должны делать, это:

if(static_cast<int>(maxTotal) % 2 == 1)

Переменные в C ++ не могут изменять типы. Статическое приведение возвращает приведенное значение, оно не меняет тип входной переменной, поэтому вы должны использовать его напрямую или назначить.

int iMaxTotal = static_cast<int>(maxTotal);

if(iMaxTotal % 2 == 1)
addCalc = minTotal;
else
addCalc = 0;

Это тоже сработало бы.

5

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

Вы должны назначить ваше приведение к переменной, иначе оно ничего не делает. static_cast<int>(maxTotal) вернет значение типа int

double maxTotal, minTotal;

cin >> maxTotal >> minTotal;

int addCalc;

int i_maxTotal = static_cast<int>(maxTotal);

if(i_maxTotal % 2 == 1)
addCalc = minTotal;
else
addCalc = 0;
0