2013-08-04 22 views
5

Ich schreibe ein Programm für meine Kontrollstrukturen Klasse und ich versuche es zu kompilieren. Der einzige Fehler, zumindest der einzige Fehler, den der Compiler auffängt, ist die Angabe ungültiger Operanden vom Typ 'double' und 'int' in den binären 'operator%'. Der größte Teil des Programms ist nicht enthalten, da es zu lang ist und nicht wirklich zu diesem Problem gehört, zumindest glaube ich nicht.Ungültige Operanden vom Typ 'double' und 'int' in binär 'operator%'

double maxTotal, minTotal; 

cin >> maxTotal >> minTotal; 

int addCalc; 

static_cast<int>(maxTotal); 

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

Antwort

5

Ihr static_cast macht nichts. Was Sie tun sollten, ist:

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

Variablen in C++ können Typen nicht ändern. Static cast gibt den Casted-Wert zurück, der den Typ der Eingabevariablen nicht ändert. Sie müssen ihn also direkt verwenden oder zuweisen.

int iMaxTotal = static_cast<int>(maxTotal); 

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

Das würde auch funktionieren.

+0

Ahhhh zurückkehren, ich danke Ihnen so sehr. – user2649644

0

Sie sollten Ihre Besetzung einer Variablen zuweisen, sonst macht sie nichts. static_cast<int>(maxTotal) einen Wert vom Typ 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; 
Verwandte Themen