sizeof(a)/sizeof(t)
รหัสประเภทลงในการแสดงออกอย่างชัดเจน ตอนนี้คุณมีประเภทที่ระบุในหลาย ๆ สถานที่โดยไม่มีการสนับสนุนคอมไพเลอร์เพื่อให้แน่ใจว่าคุณกำลังใช้ประเภทเดียวกัน ดังนั้นถ้าคุณเปลี่ยนประเภทฐานของอาร์เรย์ แต่ไม่ใช่ในนิพจน์นับ (แยกจากกันโดยสิ้นเชิง) bingo: รหัสของคุณจะรวบรวมได้ดี แต่องค์ประกอบของคุณจะผิด หากคุณโชคดีที่โปรแกรมของคุณจะทำงานล้มเหลว แต่ถ้าไม่ใช่โปรแกรมจะทำงานได้อย่างถูกต้องเกือบทั้งหมด แต่ทุกครั้งที่ทำงานจะผิดปกติอย่างสิ้นเชิง
sizeof(a)/sizeof(a[0])
มีการรับประกันว่าถูกต้องต้องใช้ชื่อของอาร์เรย์เท่านั้น เปลี่ยนประเภทแล้วคุณก็สบายดี เปลี่ยนชื่ออาร์เรย์และคอมไพเลอร์จะบ่น ไม่ต้องคิดอะไรเราชอบโปรแกรมประเภทนั้น