質問: %d\n", min1); return 0; } ``**``` ``` **
回答: こんにちは。 もし、gccをお使いなら、下記でいけると思います。 ``` // int min[i] ; printf("何個整数を入力しますか:"); scanf("%d", &n); int min[n] ; ``` 元のプログラムでは、`int i; int min[i];`となってますが、min[i]を宣言した時`i`は初期化していないため、C言語の規格上はこの時点では不定値です。ただし、gccはこのような時0に初期化するようです。従って、`int min[0];`と宣言したのと同じ意味になるため、メモリが確保されておらず、何が起こるか分からない状態なのです。 なお、このように実行時に決まる要素数で配列を定義する方法はVLAと呼ばれています。VLAはC言語の標準規格で規定されてますが、C++の標準規格には含まれません。また、残念ながらVC++はサポートしていませんので、使う場合は要注意です。