2017-06-03 67 views
-3

我有以下2D阵列:打印2D阵列在C不同的列大小++

#define MAX_N 100 
int main() { 

    int myArray[MAX_N][MAX_N] = { 
    { 01 }, 
    {}, 
    { 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 

230 
1 

然而,我不明白这一点。

有什么建议吗?

回答

0

我想你不会以任何方式获得所需的输出。实际产量大概如下:

1 
0 
0 
0 
83 
0 
0 
0 
230 
0 
0 
0 
1 
0 
0 
0 

为什么你永远不会回来0123的原因是,这个整数文字存储为一个普通的整数值,丢失任何信息,无论是在有一个领先的0整数文字的“文本”表示与否。此外,整数文字0123表示octal value,其为十进制的83。请注意,数据存储为整数值,默认情况下以十进制格式输出。所以cout << 0123实际上打印83

其次,你的循环也访问你没有明确初始化的元素。举例来说,你的数组的第一行:将会有一个输出myarray[0][1]..myarray[0][3]以及,虽然你只分配myarray[0][0] = 1