5

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

double maxTotal, minTotal;

cin >> maxTotal >> minTotal;

int addCalc;

static_cast<int>(maxTotal);

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

2 回答 2

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;

这也行。

于 2013-08-04T01:26:11.620 回答
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;
于 2013-08-04T01:28:32.727 回答