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
ส่งที่นี่