2016-04-17 13 views
2

Das ist ziemlich seltsam, aber ich habe diesen kleinen Code, den ich benutze, um zu zählen, wie viele von jeder Farbe in einer Hand sind. Clubs und Hearts kehren jedoch immer lächerlich unerhörte und offensichtlich falsche Ergebnisse zurück. Diamanten und Spaten sind immer richtig. Was fehlt mir hier?Falsche Werte in einem einfachen Chunk

int numClubs, numHearts, numDiamonds, numSpades = 0; 

     // Iterate through all the cards in the 
     // player's hand, incrementing the counters 
     // if they are a given suit. 
     for (int i = 0; i < m_numCards; i++){ 
     if ((m_cards[i]->getSuit()) == Card::Clubs) 
      numClubs++; 
     else if ((m_cards[i]->getSuit()) == Card::Hearts) 
      numHearts++; 
     else if ((m_cards[i]->getSuit()) == Card::Diamonds) 
      numDiamonds++; 
     else 
      numSpades++; 
     } 

Antwort

4

Ihre Deklaration wird nur initialisiert numSpades. Die anderen Variablen haben undefinierte Werte, dh was auch immer im Speicher vorkommt. Versuchen Sie dies:

int numClubs = 0, numHearts = 0, numDiamonds = 0, numSpades = 0; 

Diamanten gerade passiert, um einen Wert von Null zu haben, weshalb es schien, richtig zu funktionieren.

+0

Oh mein Gott, das war sehr dumm. Vielen Dank! – swingonaspiral

+1

@swingonaspiral Du bist nicht der erste, der diesen Fehler macht und du wirst sicherlich nicht der letzte sein. :) –