size_t型が符号なし整数として定義されている環境だと、iがsignedの場合
i < sizeof(a) / sizeof(* a);
の部分で「signedとunsigned比較すんなボケ」という警告が出るから
unsignedにしたんだろう。
だがこれだと、size_t型が符号あり整数として定義されている環境では
逆に警告が出る。
これが嫌な人は(sizeof(a) / sizeof(* a))の方をcastしたりするんだろうけど、
signedなsize_t型なんて聞いたことないからぶっちゃけどーでもいい。