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
тут.