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 NSLogNachricht ist tatsächlich NSLog(@"%lg", (long) myInt);. Warum muss ich den ganzzahligen Wert von in konvertieren myInt, longwenn der Wert angezeigt werden soll?
NSIntegerist 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);, daslonggegossen wird, um es mit dem oben zu machen MatchlQualifier%ld, aber all das ist nicht notwendig , daNSLog(@"%d", myInt);ausreichend ist (vorausgesetzt , dass wir sehen können , dassmyIntnichtlong. Unterm Strich, werfen SiemyIntbei Verwendung von langen Qualifikationsspiel in Format Zeichenfolge, aber keine Notwendigkeit, entweder langes Zeichenfolgenformat-Qualifikationsmerkmal zu verwenden oderlonghier