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 NSLogkomunikat to faktycznie NSLog(@"%lg", (long) myInt);. Dlaczego muszę konwertować wartość całkowitą myIntna, longjeś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);,longobsada ma dopasować ją dolkwalifikatora%ld, ale wszystko to jest niepotrzebne, ponieważNSLog(@"%d", myInt);jest wystarczające (biorąc pod uwagę, że widzimy, żemyIntnie jestlong. Podsumowując, rzucasz,myIntjeś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 anilongrzutowania