>a[i++] = 0;

この書き方悪いよ
int i = 0;
i++;
a[i] = 0;
と書くのが正解
可読性が大事なのよ。
関数でもそう、そのなかに処理がいくつもあると
可読性が悪い。