我有以下2d数组:
#define MAX_N 100
int main() {
int myArray[MAX_N][MAX_N] = {
{ 01 },
{ 0123 },
{ 230 },
{ 1 }
};
for (int j=0;j<4;j++){
for (int i =0; i<4;i++)
{cout << myArray[j][i];cout<<endl;}
}
while ( !_kbhit());
return (0);
}
所需的输出是:
01
0123
230
1
然而,我不明白。
有什么建议吗?
答案 0 :(得分:0)
我想你不会以任何方式获得所需的输出。实际输出可能如下:
1
0
0
0
83
0
0
0
230
0
0
0
1
0
0
0
你不能回来0123
的原因是这个整数文字存储为一个普通的整数值,在&#中是否有一个前导0
时会丢失任何信息34;文本&#34;是否表示整数文字。此外,整数文字0123
表示octal value,小数为83
。请注意,数据存储为整数值,默认情况下以十进制格式输出。因此cout << 0123
实际打印83
。
其次,您的循环还会访问未明确初始化的元素。例如,您的数组的第一行:myarray[0][1]..myarray[0][3]
也会有一个输出,尽管您只分配myarray[0][0] = 1
。