NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
El código anterior produce un error:
Los valores de tipo 'NSInteger' no deben usarse como argumentos de formato; agregue un reparto explícito a 'largo' en su lugar
El NSLog
mensaje corregido es en realidad NSLog(@"%lg", (long) myInt);
. ¿Por qué tengo que convertir el valor entero de myInt
a long
si quiero que se muestre el valor?
NSInteger
es larga), pero parece que está compilando con el objetivo de OS X (donde está ). NSInteger
long
NSLog(@"%ld", (long) myInt);
, ellong
reparto es para que coincida con ell
calificador de%ld
, pero todo eso es innecesario, ya queNSLog(@"%d", myInt);
es suficiente (dado que podemos ver quemyInt
no eslong
. En pocas palabras, se echómyInt
si se utiliza mucho en el formato de clasificación cadena, pero no es necesario usar el calificador de formato de cadena larga olong
emitir aquí.