回答:
sizeof(a)/sizeof(t)
タイプを式に明示的にコーディングします。これで、同じ型を使用していることを確認するためのコンパイラサポートなしで、複数の場所で型が指定されました。したがって、配列の基本型を変更し、(完全に分離した)カウント式では変更しない場合、bingo:コードは正常にコンパイルされますが、要素のカウントは間違っています。運がよければプログラムはクラッシュしますが、そうでなければプログラムはほぼ完全に正しく機能しますが、たまに完全に奇妙な動作をします。
sizeof(a)/sizeof(a[0])
正しいことが保証され、配列の名前のみが必要です。タイプを変更すれば大丈夫です。配列名を変更すると、コンパイラは文句を言います。考える必要はありません。私たちはそのようなプログラミングが好きです。
sizeof a/sizeof*a
それは実際には実質的な違いではありませんが、私は本当に好きです。