ฉันมาข้ามจุดที่น่าสนใจวันนี้ในการตรวจสอบมากกว่าเมื่อรหัสตรวจสอบ @Veedrac recommened ในคำตอบนี้ว่าประเภทขนาดตัวแปร (เช่นint
และlong
) ถูกแทนที่ด้วยประเภทขนาดคงที่เหมือนและuint64_t
uint32_t
การอ้างอิงจากความคิดเห็นของคำตอบนั้น:
ขนาดของ int และ long (และค่าที่สามารถเก็บได้) นั้นขึ้นอยู่กับแพลตฟอร์ม ในทางตรงกันข้าม int32_t จะยาว 32 บิตเสมอ การใช้ int เพียงหมายความว่าโค้ดของคุณทำงานแตกต่างกันไปตามแพลตฟอร์มต่าง ๆ ซึ่งโดยทั่วไปไม่ใช่สิ่งที่คุณต้องการ
เหตุผลที่อยู่เบื้องหลังมาตรฐานไม่ได้กำหนดชนิดที่พบจะมีการอธิบายบางส่วนที่นี่โดย @supercat C ถูกเขียนเป็นแบบพกพาข้ามสถาปัตยกรรมในทางตรงกันข้ามกับการชุมนุมซึ่งมักจะใช้สำหรับการเขียนโปรแกรมระบบในเวลา
ฉันคิดว่าความตั้งใจในการออกแบบนั้น แต่เดิมนั้นแต่ละประเภทอื่น ๆ นอกเหนือจาก int เป็นสิ่งที่เล็กที่สุดที่สามารถรองรับตัวเลขขนาดต่างๆและ int นั้นเป็นขนาด "วัตถุประสงค์ทั่วไป" ที่ใช้งานได้จริงที่สุดที่สามารถจัดการ +/- 32767
สำหรับฉันฉันมักจะใช้int
และไม่ได้กังวลเกี่ยวกับทางเลือก ฉันคิดเสมอว่ามันเป็นประเภทที่มีประสิทธิภาพดีที่สุดจบเรื่อง ที่เดียวที่ฉันคิดว่าความกว้างคงที่จะมีประโยชน์คือเมื่อเข้ารหัสข้อมูลสำหรับการจัดเก็บหรือถ่ายโอนผ่านเครือข่าย ฉันเคยเห็นประเภทความกว้างคงที่ในโค้ดที่เขียนโดยคนอื่นด้วย
ฉันติดอยู่ในยุค 70 หรือมีเหตุผลint
ในการใช้งานในยุค C99 หรือไม่?