NSUInteger到int

时间:2012-01-10 19:42:59

标签: cocoa printf nsuinteger

我写了一个使用数组的方法,在同一个类中定义。当我使用count时,它总是返回0。 当我使用时:

printf("%d", [myarray count]);

编译说:

Format '%d' expetcs type 'int', but argument 2 has type 'NSUInteger'

为什么?

1 个答案:

答案 0 :(得分:5)

您应该使用%lu代替%d。编译器会根据您传递给printf的参数检查格式字符串,看到您传递的是无符号,但将其打印为有符号整数,并发出警告。警告表示对于大于或等于2 ^ 31 printf的数字,当数据类型暗示不同的语义,即大的正整数时,将输出一个大的负数。

对Josh Caswell和thepepp的评论进行了编辑