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 NSLogmensaje corregido es en realidad NSLog(@"%lg", (long) myInt);. ¿Por qué tengo que convertir el valor entero de myInta longsi 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);, ellongreparto es para que coincida con ellcalificador de%ld, pero todo eso es innecesario, ya queNSLog(@"%d", myInt);es suficiente (dado que podemos ver quemyIntno eslong. En pocas palabras, se echómyIntsi se utiliza mucho en el formato de clasificación cadena, pero no es necesario usar el calificador de formato de cadena larga olongemitir aquí.