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

时间:2013-08-04 01:22:55

标签: 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;

2 个答案:

答案 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;

这也可以。

答案 1 :(得分:0)

您应该将演员表分配给变量,否则它不会做任何事情。 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;