无法比较相似的数据类型?
Invalid to compare similar data types?
我正在开发一个应用程序项目,用于查找在德州扑克游戏中获胜的概率。
我的程序有下面给出的 3 种数据类型。
typedef enum {
SPADES,
HEARTS,
DIAMONDS,
CLUBS,
NUM_SUITS
} suit_t;
struct card_tag {
unsigned value;
suit_t suit;
};
typedef struct card_tag card_t;
struct deck_tag {
card_t ** cards;
size_t n_cards;
};
typedef struct deck_tag deck_t;
我在编写 assert 函数以检查洗牌后纸牌是否重复时遇到了问题。该错误表明我正在比较无效的数据类型。
错误信息的图片是:
Error Message
所以从技术上讲,我仍在比较相似的数据类型,但它们是无效的。谁能帮帮我?
您不能使用 ==
来比较两个结构。 ==
的操作数必须是算术或指针。比较他们的成员:
card_t a = card_from_num(checkingCard);
card_t b = *d->cards[i];
if (a.value == b.value && a.suit == b.suit) …
你可以为此写一个函数:
_Bool CardsAreEqual(card_t a, card_t b)
{
return a.value == b.value && a.suit == b.suit;
}
…
if (CardsAreEqual(card_from_num(checkingCard), *d->cards[i]) …
我正在开发一个应用程序项目,用于查找在德州扑克游戏中获胜的概率。
我的程序有下面给出的 3 种数据类型。
typedef enum {
SPADES,
HEARTS,
DIAMONDS,
CLUBS,
NUM_SUITS
} suit_t;
struct card_tag {
unsigned value;
suit_t suit;
};
typedef struct card_tag card_t;
struct deck_tag {
card_t ** cards;
size_t n_cards;
};
typedef struct deck_tag deck_t;
我在编写 assert 函数以检查洗牌后纸牌是否重复时遇到了问题。该错误表明我正在比较无效的数据类型。 错误信息的图片是:
Error Message
所以从技术上讲,我仍在比较相似的数据类型,但它们是无效的。谁能帮帮我?
您不能使用 ==
来比较两个结构。 ==
的操作数必须是算术或指针。比较他们的成员:
card_t a = card_from_num(checkingCard);
card_t b = *d->cards[i];
if (a.value == b.value && a.suit == b.suit) …
你可以为此写一个函数:
_Bool CardsAreEqual(card_t a, card_t b)
{
return a.value == b.value && a.suit == b.suit;
}
…
if (CardsAreEqual(card_from_num(checkingCard), *d->cards[i]) …