NSUInteger для int - PullRequest
       20

NSUInteger для int

2 голосов
/ 10 января 2012

Я написал метод, который использует myarray, определенный в том же классе.Когда я использую счетчик, он всегда возвращает 0. Когда я использую:

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

компилятор говорит:

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

почему?

1 Ответ

5 голосов
/ 10 января 2012

Вы должны использовать %lu вместо %d.Компилятор проверяет вашу строку формата на соответствие параметрам, которые вы передаете printf, видит, что вы передаете неподписанное, но печатает его как целое число со знаком, и выдает предупреждение.Предупреждение указывает, что для чисел, больших или равных 2 ^ 31 printf, будет выведено большое отрицательное число, когда тип данных подразумевает другую семантику, а именно большое положительное целое число.

EDITEDв ответ на комментарии Джоша Касвелла и thepepp

...