2

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

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

编译器说:

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

为什么?

4

1 回答 1

5

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

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

于 2012-01-10T19:45:25.203 回答