NSInteger myInt = 1804809223;
NSLog(@"%i", myInt); <====
Đoạn mã trên tạo ra lỗi:
Các giá trị của loại 'NSInteger' không nên được sử dụng làm đối số định dạng; thay vào đó, thêm một diễn viên rõ ràng vào 'dài'
Các điều chỉnh NSLogthông điệp thực sự là NSLog(@"%lg", (long) myInt);. Tại sao tôi phải chuyển đổi giá trị số nguyên myIntthành longnếu tôi muốn giá trị hiển thị?
NSIntegerlà không lâu), nhưng có vẻ như bạn đang biên soạn với OS X mục tiêu (trong đó NSInteger là long ).
NSLog(@"%ld", (long) myInt);, cáclongdiễn viên là làm cho nó phù hợp với cáclvòng loại của%ld, nhưng tất cả điều đó là không cần thiết nhưNSLog(@"%d", myInt);là đủ (cho rằng chúng ta có thể thấy rằngmyIntkhông phải làlong. Tóm lại, bạn castmyIntnếu sử dụng dài vòng loại ở định dạng chuỗi, nhưng không cần sử dụng vòng loại định dạng chuỗi dài hoặclongđúc ở đây.