当我在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;
}
}
}
答案 0 :(得分:2)
初始化数组int flag[2][2]
时,您正在初始化2x2数组,而不是3x3数组。由于数组是零索引的,flag[2][0]
将一个int放在2x2标志数组的第三行的第0列中,该列超出范围。将元素放置在数组边界之外的行为是未定义的,并且可能导致您描述的问题。
声明int flag[3][3]
,代码应该有效。