sizeof(a)/sizeof(t)
secara eksplisit kode tipe ke dalam ekspresi. Anda sekarang memiliki jenis yang ditentukan di beberapa lokasi, tanpa dukungan penyusun untuk memastikan bahwa Anda menggunakan jenis yang sama. Jadi, jika Anda mengubah tipe dasar array, tetapi tidak dalam ekspresi jumlah (sepenuhnya terpisah), bingo: kode Anda akan mengkompilasi dengan baik, tetapi jumlah elemen Anda akan salah. Jika Anda beruntung program Anda akan macet, tetapi jika tidak, ia akan berfungsi hampir sepenuhnya dengan benar, tetapi sesekali akan berperilaku sangat aneh.
sizeof(a)/sizeof(a[0])
dijamin benar, hanya membutuhkan nama array. Ubah jenisnya dan Anda baik-baik saja; ganti nama array dan kompiler akan mengeluh. Tidak perlu berpikir: kami menyukai pemrograman seperti itu.