As explained in other answers, just because you don't see any adverse effects does not mean they are not there. Here is an example to help see the kind of damage overrunning an array can cause. (I ran it online at https://www.codechef.com/ide)
#include <stdio.h>
int main(void) {
char a1[4]={'A','B','C',0};
char a2[4]={'E','F','G',0};
char a3[4]={'I','J','K',0};
a2[4]='Z';
printf("%s %s %s\n", a1, a2, a3);
return 0;
}
The output of this program is ABC EFG ZJK
The letter I of array a3 has been overwritten with a Z
Overrunning array a2 actually corrupted a3
Note: Depending on the environment, the overwrite could have hit elsewhere or crashed the program. For example running the same code at https://www.tutorialspoint.com/compile_c_online.php results in ZBC EFG IJK