NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
Der obige Code erzeugt einen Fehler:
Werte vom Typ 'NSInteger' sollten nicht als Formatargumente verwendet werden. Fügen Sie stattdessen 'explizit' eine explizite Besetzung hinzu
Die korrigierte NSLog
Nachricht ist tatsächlich NSLog(@"%lg", (long) myInt);
. Warum muss ich den ganzzahligen Wert von in konvertieren myInt
, long
wenn der Wert angezeigt werden soll?
NSInteger
ist nicht lang), aber es hört sich so an, als würden Sie mit dem OS X-Ziel kompilieren (wo NSInteger
ist long
).
NSLog(@"%ld", (long) myInt);
, daslong
gegossen wird, um es mit dem oben zu machen Matchl
Qualifier%ld
, aber all das ist nicht notwendig , daNSLog(@"%d", myInt);
ausreichend ist (vorausgesetzt , dass wir sehen können , dassmyInt
nichtlong
. Unterm Strich, werfen SiemyInt
bei Verwendung von langen Qualifikationsspiel in Format Zeichenfolge, aber keine Notwendigkeit, entweder langes Zeichenfolgenformat-Qualifikationsmerkmal zu verwenden oderlong
hier