for (i;i<3;i++){
This does not initialize i to zero. The first term basically does nothing to i. It will count up to 3 once and then it stays at 3 for the next iteration of loop(). The j loop is the same.
for (i;i<3;i++){
This does not initialize i to zero. The first term basically does nothing to i. It will count up to 3 once and then it stays at 3 for the next iteration of loop(). The j loop is the same.