買い物ついでに、本屋へよって参考書を見てきました。
配列は、オーバーしても何事もなかったように動くんですね。
私が最初に読んでいた本には、

int suuti[3]

と宣言すると、suuti[3]はありません。と書かれていたので、
suuti[3]を使うには、宣言で、

int suuti[4]

と宣言しないといけないものと思っていました。
確かに文法的にはきちんと宣言しないといけないのだけど、
宣言していないからといって、アクセスできないわけではないのですね。
で、値の代入や、初期化をせずにそのまま printfすると、
宣言のときにメモリ上に確保された領域に、もともと入っていた数値を
表示しているんですよね。だから見覚えのない数値がってことかな。

ところで、

int suuti[2]

と宣言すれば、メモリ上には、領域が続けて確保されると思いますが、
あとで追加した場合、これはやっぱりメモリ上の別のところに確保されるのでしょうか?