为什么此代码输出这么多数字?

时间:2019-06-22 18:26:55

标签: c++ arrays loops

我从两个数组a和b开始,尝试输出尺寸为sizeof(a)和sizeof(b)的矩阵c,其条目是a和b的每对笛卡尔积的乘积。

这些产品也存储在二维数组c中。

我的代码如下。

#include <iostream>
#include <string>

int main()
{   
    int a[]= { 1,2,3,4,5,5 };
    int b[]= { 1,23,2,32,42,4 };
    int c[sizeof(a)][sizeof(b)];

    for (int i = 0; i < sizeof(a); i++) {
        for (int j = 0; j < sizeof(b); j++) {
            c[i][j] =  a[i]* b[j] ;
            std::cout << c[i][j] << " ";
        }
        std::cout << "\n";
    }

    return 0;
}

我的输出是:

1 23 2 32 42 4 -858993460 -858993460 1 2 3 4 5 5 -858993460 16710224 15543422 1 2161328 2122464 16710312 15543008 196436084 15536213
2 46 4 64 84 8 -1717986920 -1717986920 2 4 6 8 10 10 -1717986920 33420448 31086844 2 4322656 4244928 33420624 31086016 392872168 31072426
3 69 6 96 126 12 1717986916 1717986916 3 6 9 12 15 15 1717986916 50130672 46630266 3 6483984 6367392 50130936 46629024 589308252 46608639
...

这只是输出的一小部分。

1 个答案:

答案 0 :(得分:4)

sizeof(a)不是数组的长度,它是存储数组所需的字节数。

由于数组的元素类型每个都大于一个字节,因此编号是不同的。