2016-04-17 8 views
2

これはちょっと奇妙ですが、私はこのスーツのどれだけが手にあるかを数えるために使っているコードを少しずつ持っています。しかし、クラブとハーツはいつも間違って、明らかに間違った結果を返します。ダイヤモンドとスペードは常に正しいです。私はここで何が欠けていますか?シンプルチャンクの値が正しくない

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++; 
     } 

答えて

4

あなたの宣言では、numSpadesが初期化されます。他の変数には未定義の値があります。つまり、メモリ内に何があったのかが決まります。これを試してみてください:

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

ダイヤモンドはちょうど正常に動作するように見え理由はゼロの値を持つことが起こりました。

+0

ああ私の良さは、とても愚かでした。どうもありがとうございました! – swingonaspiral

+1

@swingonaspiralあなたはその間違いを最初にしたことはありませんし、確かに最後のことではありません。 :) –

関連する問題