行列を数える簡単なプログラムを作成しました。コードは次のとおりです。
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int result[3] = {0,0,0};
int matrixc[3][6] = {
{0,0,0,0,0,1},
{0,0,0,1,1,1},
{1,0,1,0,0,1}
};
for(int x=0;x <3;x++)
{
for(int y=0;y < 6;y++)
{
result[x] += (matrixc[x][y] * pow(2,6-y));
}
cout << result[x] << endl;
}
}
出力は私が望んでいたものです2,14,and 82
。しかし、整数配列の初期化を削除するとresult
:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int result[3]; //deleted initialization
int matrixc[3][6] = {
{0,0,0,0,0,1},
{0,0,0,1,1,1},
{1,0,1,0,0,1}
};
for(int x=0;x <3;x++)
{
for(int y=0;y < 6;y++)
{
result[x] += (matrixc[x][y] * pow(2,6-y));
}
cout << result[x] << endl;
}
}
奇妙な出力が得られました: 1335484418,32618, and 65617
.
初期化がある配列とない配列で出力が異なる理由を教えてください。
result
実際には、行列の膨大なデータがあるため、すべての配列を初期化したくありません。
std::vector
すべてのresult
配列を初期化せずに使用すると可能ですか?