NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
Powyższy kod powoduje błąd:
Wartości typu „NSInteger” nie powinny być używane jako argumenty formatu; zamiast tego dodaj wyraźne rzutowanie do „długiego”
Poprawiony NSLog
komunikat to faktycznie NSLog(@"%lg", (long) myInt);
. Dlaczego muszę konwertować wartość całkowitą myInt
na, long
jeśli chcę, aby wartość była wyświetlana?
NSInteger
jest długi), ale brzmi to tak, jakbyś kompilował z celem OS X (gdzie jest ). NSInteger
long
NSLog(@"%ld", (long) myInt);
,long
obsada ma dopasować ją dol
kwalifikatora%ld
, ale wszystko to jest niepotrzebne, ponieważNSLog(@"%d", myInt);
jest wystarczające (biorąc pod uwagę, że widzimy, żemyInt
nie jestlong
. Podsumowując, rzucasz,myInt
jeśli używasz długiego kwalifikatora w formacie string, ale nie ma potrzeby używania w tym miejscu kwalifikatora formatu długich łańcuchów anilong
rzutowania