二进制'operator''类型为'double'和'int'的操作数无效

use*_*644 5 c++ compiler-errors binary-operators

我正在为我的控制结构类编写一个程序,我正在尝试编译它.唯一的错误,至少是编译器拾取的唯一错误是将类型为'double'和'int'的无效操作数指向二进制'operator%'.大多数程序都不包括在内,因为它太长并且与这个问题无关,至少我不相信.

double maxTotal, minTotal;

cin >> maxTotal >> minTotal;

int addCalc;

static_cast<int>(maxTotal);

if(maxTotal % 2 == 1)
     addCalc = minTotal;
else
     addCalc = 0;
Run Code Online (Sandbox Code Playgroud)

Bor*_*der 5

你的static_cast没有做任何事情.你应该做的是:

if(static_cast<int>(maxTotal) % 2 == 1)
Run Code Online (Sandbox Code Playgroud)

C++中的变量不能改变类型.静态强制转换返回的值不会改变输入变量的类型,因此您必须直接使用它或分配它.

int iMaxTotal = static_cast<int>(maxTotal);

if(iMaxTotal % 2 == 1)
    addCalc = minTotal;
else
    addCalc = 0;
Run Code Online (Sandbox Code Playgroud)

这也会奏效.