Domanda

Ho scritto un metodo tha usi myarray, definito nella stessa classe. Quando uso contare restituisce sempre 0. Quando uso:

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

compilatore dice:

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

perché?

È stato utile?

Soluzione

Si dovrebbe usare %lu invece di %d. Il compilatore controlla la stringa di formato contro i parametri che si sta passando a printf, vede che si sta passando un unsigned, ma stamparlo come un intero con segno, ed emette un avvertimento. L'avviso indica che per i numeri maggiore o uguale a 2 ^ 31 printf sarebbe uscita un gran numero negativo, quando il tipo di dati implica un differente semantica, cioè, un grande numero intero positivo.

modificato in risposta ai commenti da Josh Caswell e thepepp

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top