简单块中的错误值

Incorrect Values in a Simple Chunk

这很奇怪,但我有这么一小段代码,我用它来计算手中每种花色的数量。然而,梅花和红心总是 return 离谱且明显错误的结果。方块和黑桃总是正确的。我在这里错过了什么?

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

您的声明仅初始化 numSpades。其他变量具有未定义的值,即内存中发生的任何值。试试这个:

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

钻石刚好有一个零值,这就是为什么它看起来可以正常工作的原因。