2013-08-04 14 views
5

Piszę program dla mojej klasy struktur kontroli i próbuję ją skompilować. Jedynym błędem, przynajmniej jedynym błędem, który podnosi kompilator, jest wypowiadanie nieprawidłowych argumentów typu "double" i "int" dla binarnego "operatora%". Większość programu nie jest uwzględniona, ponieważ jest zbyt długa i tak naprawdę nie odnosi się do tego problemu, przynajmniej nie wierzę.Nieważne operandy typu "double" i "int" dla binarnego "operatora%"

double maxTotal, minTotal; 

cin >> maxTotal >> minTotal; 

int addCalc; 

static_cast<int>(maxTotal); 

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

Odpowiedz

5

Twoja static_cast nie robi nic. Co powinieneś robić to:

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

Zmienne w C++ nie mogą zmieniać typów. Odlewanie statyczne zwraca wartość rzucaną, ale nie zmienia typu zmiennej wejściowej, więc musisz użyć jej bezpośrednio lub ją przypisać.

int iMaxTotal = static_cast<int>(maxTotal); 

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

To też by działało.

+0

Ahhhh, dziękuję bardzo. – user2649644

0

Powinieneś przypisać rzutowanie do zmiennej, w przeciwnym razie nic nie robi. static_cast<int>(maxTotal) zwróci wartość typu 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; 
Powiązane problemy