NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
Код, наведений вище, створює помилку:
Значення типу "NSInteger" не повинні використовуватися як аргументи формату; замість цього явно додайте "довгий"
Виправлене NSLogповідомлення є насправді NSLog(@"%lg", (long) myInt);. Чому я повинен перетворити ціле значення myIntв , longякщо я хочу значення для відображення?
NSIntegerце НЕ довго), але це звучить , як ви збираєте з метою OS X (де NSInteger є long ).
NSLog(@"%ld", (long) myInt);,longакторський склад - це зрівняти його зlкласифікатором%ld, але все це непотрібно, оскількиNSLog(@"%d", myInt);це достатньо (враховуючи, що ми можемо бачити, щоmyIntце не такlong. Підсумковий рядок, ви подаєте,myIntякщо використовуєте довгий класифікатор у форматі рядок, але тут не потрібно використовувати ані кваліфікаційний формат довгих рядків, ані передачіlongтут.