The i = -1;
part of your program is fine.
Converting -1
to an unsigned integer type is defined in C, and results in a value that, if incremented, results in zero.
This said, you are not gaining any line of code with respect to the idiomatic for (i=0; i<ARRAY_SIZE; i++) …
.
Your %zi
format should probably be %zu
.