NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
Il codice sopra produce un errore:
I valori di tipo 'NSInteger' non devono essere usati come argomenti di formato; aggiungi invece un cast esplicito a 'long'
Il NSLog
messaggio corretto è in realtà NSLog(@"%lg", (long) myInt);
. Perché devo convertire il valore intero di myInt
in long
se desidero visualizzare il valore?
NSInteger
è lungo), ma sembra che stai compilando con il target OS X (dove si trova ). NSInteger
long
NSLog(@"%ld", (long) myInt);
, illong
cast è quello di farlo combaciare con ill
qualificatore di%ld
, ma tutto ciò non è necessario in quantoNSLog(@"%d", myInt);
è sufficiente (dato che possiamo vedere chemyInt
non lo èlong
. In conclusione, si lanciamyInt
se si utilizza un qualificatore lungo in formato stringa, ma non è necessario utilizzare il qualificatore di formato stringa lungo o illong
cast qui.