ในปัจจุบันข้ามแพลตฟอร์ม C ++ (หรือ C) โลกเรามี :
Data model | short | int | long | long long | pointers/size_t | Sample operating systems
...
LLP64/IL32P64 16 32 32 64 64 Microsoft Windows (x86-64 and IA-64)
LP64/I32LP64 16 32 64 64 64 Most Unix and Unix-like systems, e.g. Solaris, Linux, BSD, and OS X; z/OS
...
สิ่งนี้หมายความว่าในวันนี้คือว่าสำหรับจำนวนเต็ม "ธรรมดา" (ลงนาม) int
จะพอเพียงและยังสามารถใช้เป็นประเภทจำนวนเต็มเริ่มต้นเมื่อเขียนรหัสแอปพลิเคชัน C ++ มันจะยัง - เพื่อวัตถุประสงค์ในทางปฏิบัติในปัจจุบัน - มีขนาดที่สอดคล้องกันในทุกแพลตฟอร์ม
Iff a use case ต้องการอย่างน้อย 64 bits วันนี้เราสามารถใช้งานlong long
ได้แม้ว่าอาจจะใช้หนึ่งในประเภทที่ระบุพยานบุคคลหรือ__int64
ประเภทอาจทำให้รู้สึกมากขึ้น
สิ่งนี้long
อยู่ตรงกลางและเรากำลังพิจารณาห้ามการใช้งานlong
จากรหัสแอปพลิเคชันของเราทันที
สิ่งนี้จะสมเหตุสมผลหรือมีกรณีสำหรับการใช้งานlong
ในรหัส C ++ (หรือ C) ที่ทันสมัยที่ต้องเรียกใช้ข้ามแพลตฟอร์ม? (แพลตฟอร์มเป็นเดสก์ท็อป, อุปกรณ์มือถือ แต่ไม่ใช่สิ่งที่ต้องการไมโครคอนโทรลเลอร์, DSP และอื่น ๆ )
ลิงก์พื้นหลังที่น่าสนใจอาจเป็นไปได้:
- มาตรฐาน C ++ ระบุขนาดของ int, long type ที่จะเป็นอย่างไร
- เหตุใดทีม Win64 จึงเลือกรุ่น LLP64
- โมเดลการเขียนโปรแกรม 64 บิต: ทำไมต้อง LP64 (ค่อนข้างเก่า)
- มีการ
long
รับประกันว่าจะมีอย่างน้อย 32 บิต? (นี่คือที่อยู่การอภิปรายความคิดเห็นด้านล่างคำตอบ .)
long
เป็นวิธีเดียวที่จะรับประกัน 32 บิต int
อาจเป็น 16 บิตดังนั้นสำหรับบางแอปพลิเคชันก็ไม่เพียงพอ ใช่int
บางครั้งก็เป็น 16 บิตสำหรับคอมไพเลอร์สมัยใหม่ ใช่คนเขียนซอฟต์แวร์บนไมโครคอนโทรลเลอร์ ฉันเถียงคนเขียนซอฟต์แวร์ที่มีผู้ใช้บนไมโครคอนโทรลเลอร์มากกว่าบนพีซีที่มีอุปกรณ์ iPhone และ Android เพิ่มขึ้นและไม่ต้องพูดถึงการเพิ่มขึ้นของ Arduinos เป็นต้น
int
ยังคงเป็น 16 บิต ฉันเกลียดที่จะพูด แต่ถ้าคุณกำลังจะเขียนเกี่ยวกับ "โลกข้ามแพลตฟอร์มของวันนี้" คุณไม่สามารถเพิกเฉยต่อชมพูทวีปทั้งหมด