sizeof(a)/sizeof(t)
mã rõ ràng các loại vào biểu thức. Bây giờ bạn có loại được chỉ định ở nhiều vị trí, không có hỗ trợ trình biên dịch để đảm bảo rằng bạn đang sử dụng cùng loại. Vì vậy, nếu bạn thay đổi loại cơ sở của mảng, nhưng không phải trong biểu thức đếm (hoàn toàn riêng biệt), bingo: mã của bạn sẽ biên dịch tốt, nhưng số phần tử của bạn sẽ sai. Nếu bạn may mắn, chương trình của bạn sẽ bị sập, nhưng nếu không, nó sẽ hoạt động gần như hoàn toàn chính xác, nhưng thỉnh thoảng sẽ hoạt động hoàn toàn kỳ quái.
sizeof(a)/sizeof(a[0])
được đảm bảo là chính xác, chỉ yêu cầu tên của mảng. Thay đổi loại và bạn ổn; thay đổi tên mảng và trình biên dịch sẽ khiếu nại. Không cần suy nghĩ: chúng tôi thích kiểu lập trình đó.