对一副扑克牌的“>”运算符重载:
扑克牌里以A为最大,直接比较无法实现,命题如下:
如果card1大于card2,card1是A,card2不是A,card1>card2为真(这种情况不可能出现,扑克牌里没有比A还小的常数)
如果card1大于card2,card1不是A,card2不是A,card1>card2为真
如果card1大于card2,card1不是A,card2是A,card1>card2为假
如果card1不大于card2,card1不是A,card2是A,card1>card2为真(这中情况也不可能出现,同上)
如果card1不大于card2,card1是A,card2不是A,card1>card2为真
如果card1不大于card2,card1不是A,card2不是A,card1>card2为假
做成表格显示
card1>card2 | card1==A | card2==A | card1>card2 ? |
True | False | False | True |
True | False | True | False |
False | True | False | True |
False | False | False | False |
归集规律,使用按位异或来实现(^)
card1>card2=(card1>card2)^(card1==A)^(card2==A)