[英]C++ Compile Error (comparison between signed and unsigned integer expressions)
我需要有关此消息的帮助:
char_cards.cpp:在成员函数'void CHARACTER :: Cards_pullout()'中:char_cards.cpp:88:警告:有符号和无符号整数表达式之间的比较
somone可以解释此错误的含义吗? 我认为问题出在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();
}
将无符号整数初始化为-1
的定义很明确,并将无符号整数设置为其最大值。 因此,使用-1表示错误条件是可以的。 要摆脱警告,您有几种选择:
1)使用static_cast
。 这表明您知道转换,这是有意的:
if empty_space == static_cast<DWORD>(-1)) { ...
2)使用std::numeric_limits<DWORD>::max()
代替-1
。 这将要求包括limits
标头。
if (empty_space == std::numeric_limits<DWORD>::max()) { ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.