NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
O código acima produz um erro:
Valores do tipo 'NSInteger' não devem ser usados como argumentos de formato; adicione uma conversão explícita a 'long'
A NSLogmensagem corrigida é realmente NSLog(@"%lg", (long) myInt);. Por que preciso converter o valor inteiro de myIntpara longse eu quero que o valor seja exibido?
NSInteger é longa), mas parece que você está compilando com o destino do OS X (onde está ). NSInteger long
NSLog(@"%ld", (long) myInt);, olongelenco é torná-lo corresponder-se com olqualificador de%ld, mas tudo isso é desnecessário comoNSLog(@"%d", myInt);é suficiente (uma vez que podemos ver quemyIntnão élong. A linha inferior, você jogamyIntse estiver usando longa qualificador em formato string, mas não há necessidade de usar um qualificador de longo formato de corda oulongfundido aqui.