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 NSLog
thô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 myInt
thành long
nếu tôi muốn giá trị hiển thị?
NSInteger
là 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áclong
diễn viên là làm cho nó phù hợp với cácl
vò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ằngmyInt
không phải làlong
. Tóm lại, bạn castmyInt
nế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.