私はたくさんのchar
sを取る C でこのコードを持っています
#include<stdio.h>
# define NEWLINE '\n'
int main()
{
char c;
char str[6];
int i = 0;
while( ((c = getchar()) != NEWLINE))
{
str[i] = c;
++i;
printf("%d\n", i);
}
return 0;
}
入力は: testtesttest
出力: 1 2 3 4 5 6 7 8 117 118 119 120
私の質問は次のとおりです。
明らかに配列の容量を超えているのに、範囲外 (セグメンテーション違反) 例外が発生しないのはなぜですか?
出力の数値が突然非常に大きな数値にジャンプするのはなぜですか?
これを C++ で試したところ、同じ動作が得られました。この理由を誰か説明してもらえませんか?