这很奇怪,但我有一小段代码,我用它来计算每件衣服的数量。然而,俱乐部和红桃总会以荒谬、离谱和明显错误的结果回报。钻石和黑桃总是正确的。我错过了什么?
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++;
}
您的声明仅初始化< code>numSpades。其他变量有未定义的值,即内存中发生的任何事情。试试这个:
int numClubs = 0, numHearts = 0, numDiamonds = 0, numSpades = 0;
钻石恰好有一个零值,这就是为什么它看起来工作正常。