我写了一个使用数组的方法,在同一个类中定义。当我使用count时,它总是返回0。 当我使用时:
printf("%d", [myarray count]);
编译说:
Format '%d' expetcs type 'int', but argument 2 has type 'NSUInteger'
为什么?
答案 0 :(得分:5)
您应该使用%lu
代替%d
。编译器会根据您传递给printf
的参数检查格式字符串,看到您传递的是无符号,但将其打印为有符号整数,并发出警告。警告表示对于大于或等于2 ^ 31 printf
的数字,当数据类型暗示不同的语义,即大的正整数时,将输出一个大的负数。
对Josh Caswell和thepepp的评论进行了编辑