環境 Windows10,visual studio2017
#define N 2 int a[2][2] ; printf("\n1つ目の行列 A を入力\n"); for(i=0;i<2;++i){ for(j=0;j<2;++j){ printf("A[%d][%d] = ", i+1, j+1); scanf("%d", &a[i][j]); } }
に関して
#define N 2 int a[N][N],
で既に2×2の配列を行う事を宣言しているのに、(スキャンした数字をいれる箱は用意したのに)なぜ、
for(i=0;i<2;++i)
for(j=0;j<2;++j)
が必要なのかわかりません。
#define N 2 int a[N][N],
でメモリを確保して、
for(i=0;i<2;++i)
for(j=0;j<2;++j)よりスキャンした数字をどのような順番で入れるかを表しているとかですか?
できればcpu内部でプログラムがどのように処理されているかを箱などを用いてわかりやすく説明して頂けないでしょうか?
実行したこと
for(i=0;i<2;++i)
for(j=0;j<2;++j)を消して#define N 2 int a[2][2] ;のみにしたところ、スキャンした数字は使われず、すべて0で配列の計算をしていました。
スキャンした数字にアドレスを振ってfor(i=0;i<2;++i)、for(j=0;j<2;++j)でスキャンした数字を扱っているのでしょうか?仮にそうだとしてもfor(i=0;i<2;++i)、for(j=0;j<2;++j)がスキャンした数字を扱うと宣言する必要はあるのでしょうか?宣言している部分らしきものは見えませんが。
for(i=0;i<2;++i)、for(j=0;j<2;++j)だけでは変数iとjが2になるまで+1されるだけでスキャンした数字を扱う部分には見えないのですが。
内部でどうやって処理されて計算を実現しているのか細かく理解したいです。
どうかよろしくお願いします。
また、今回のような計算のプログラムが内部でどのように処理されているかが詳しく書かれている本などありましたら是非紹介して頂けるとありがたいです。
どうかよろしくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/09 10:20