【发布时间】:2017-05-21 13:22:27
【问题描述】:
我需要有关此消息的帮助:
char_cards.cpp:在成员函数“void CHARACTER::Cards_pullout()”中: char_cards.cpp:88:警告:有符号和无符号之间的比较 整数表达式
有人能解释一下这个错误是什么意思吗?我认为问题出在 DWORD 上,但我不知道出了什么问题。
这是函数:
DWORD CHARACTER::GetEmptySpaceInHand()
{
for (int i=0; i<MAX_CARDS_IN_HAND; ++i)
{
if (character_cards.cards_in_hand[i].type == 0)
return i;
}
return -1;
}
void CHARACTER::Cards_pullout()
{
DWORD empty_space = GetEmptySpaceInHand();
if (empty_space == -1) // Here is the error.
{
#ifdef __MULTI_LANGUAGE_SYSTEM__
ChatPacket(CHAT_TYPE_INFO, LC_TEXT(GET_LANGUAGE(this), "You don't have space in hands."));
#else
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You don't have space in hands."));
#endif
return;
}
RandomizeCards();
SendUpdatedInformations();
}
【问题讨论】:
-
警告的哪一部分你不明白?
-
假设第 88 行是带有
if语句和比较表达式的行,请记住DWODRD是一个 unsigned 类型。比较 unsigned 和 singed 类型不会很好(因为 unsigned 类型永远不能有负值)。 -
所以我必须检查 if (empty_space == 0) ?
-
@FrezyFrezy 这取决于
GetEmptySpaceInHand返回的内容,以及您实际想要测试的内容。 -
为什么选择
DWORD而不是int作为返回类型?
标签: c++