当我输入一个数字时flag[1][2]
,我会自动将同样的数字输入flag[2][0]
。
为什么?
#include <iostream>
using namespace std;
void inicializarFlag(void);
void imrpimeflag(void);
int flag[2][2];
int main(){
int i, j, escolha;
inicializarFlag();
cout<<"digite as posicoes e o valor: "<<endl;
cin>>i;
cin>>j;
cin>>escolha;
flag[i][j] = escolha;
imrpimeflag();
return 0;
}
void inicializarFlag(void){
for (int i=0; i<=2; i++){
for(int j=0; j<=2; j++){
flag[i][j] = 0;
}
}
}
void imrpimeflag(void){
for (int i=0; i<=2; i++){
for(int j=0; j<=2; j++){
cout<<"["<<i<<"]["<<j<<"]: "<<flag[i][j]<<endl;
}
}
}
初始化array时int flag[2][2]
,您正在初始化2x2数组,而不是3x3数组。由于数组的索引为零,因此flag[2][0]
将int放在2x2标志数组第三行的第零列中,这超出了范围。将元素置于数组范围之外的行为是不确定的,并且可能导致您所描述的问题。
声明int flag[3][3]
,代码应该起作用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句