2011-11-18 66 views
1

这行代码会导致编译器抱怨并进入调试模式应以什么格式打印枚举? %什么?

NSLog(@"Attacker card: %@", [attackerCard suit]); 

不知是否是由于这样的事实,西装被声明为

@property (assign) Suit suit; 

enum价值在哪里Suit声明作为

typedef enum { 
    CLUBS, DIAMONDS, HEARTS, SPADES 
} Suit; 

我在做格式或错误的问题,否则ERE?

+0

我使用%i,如果有帮助......! – Luke

+0

使用和int格式(如%d)并将枚举强制转换为(int)。没有投射,我无法避免在XCode 6中发出警告。 –

回答

5

枚举类型的具体大小是实现定义的,但它总是一个整数类型,所以%d大部分时间都会工作。如果你需要它非常强大,你会想测试sizeof(Suit)并选择基于此的格式。

+0

谢谢Carl!有没有办法让我恢复特定枚举值的“文本表示”。换句话说,我可以做些什么来获得“HEARTS”而不是2? – JAM

+2

不,没有自己的查找表就没有办法做到这一点。 –