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 NSLog
mensagem corrigida é realmente NSLog(@"%lg", (long) myInt);
. Por que preciso converter o valor inteiro de myInt
para long
se 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);
, olong
elenco é torná-lo corresponder-se com ol
qualificador de%ld
, mas tudo isso é desnecessário comoNSLog(@"%d", myInt);
é suficiente (uma vez que podemos ver quemyInt
não élong
. A linha inferior, você jogamyInt
se estiver usando longa qualificador em formato string, mas não há necessidade de usar um qualificador de longo formato de corda oulong
fundido aqui.