为什么我的代码会导致高 return 值? C++

Why is my code causing a high return value? C++

所以我创建了一个函数来执行矩阵乘法,该函数似乎可以执行我想要的操作。

但是,该程序似乎非常慢,并且在使用该函数时我得到了一个很高的 return 值 (3221225477)。

是什么导致此功能 运行 如此缓慢,我可以做些什么来让它更快?

friend Matrix operator *(const Matrix &src, const Matrix &src2)  {  
    Matrix TEMP(src.matrixarr.size(),src2.matrixarr[1].size(),0);

    for (int i = 0; i < TEMP.matrixarr.size();i++){
        for (int j= 0; j < TEMP.matrixarr[1].size();i++){
            for( int k = 0; k < src.matrixarr[1].size();i++){
                TEMP.matrixarr[i][j] = src.matrixarr[i][k] + src2.matrixarr[k][j];
            };
        };
    }; 
    return TEMP;
};

你的代码里有3个i++,好像不对。

应该是

friend Matrix operator *(const Matrix &src, const Matrix &src2)  {  
    Matrix TEMP(src.matrixarr.size(),src2.matrixarr[1].size(),0);

    for (int i = 0; i < TEMP.matrixarr.size();i++){
        for (int j= 0; j < TEMP.matrixarr[1].size();j++){
            for( int k = 0; k < src.matrixarr[1].size();k++){
                TEMP.matrixarr[i][j] = src.matrixarr[i][k] + src2.matrixarr[k][j];
            };
        };
    }; 
    return TEMP;
};

至于3221225477的值,十六进制为0xC0000005,可能是因为i的值太大,程序无法访问对应的内存。

我知道你的程序有什么问题,但重要的是你要学会如何调试你的程序。在这种情况下,我会尝试打印出值,而不仅仅是使用调试器。

friend Matrix operator *(const Matrix &src, const Matrix &src2)  {  
    Matrix TEMP(src.matrixarr.size(),src2.matrixarr[1].size(),0);

    for (int i = 0; i < TEMP.matrixarr.size();i++){
        for (int j= 0; j < TEMP.matrixarr[1].size();i++){
            for( int k = 0; k < src.matrixarr[1].size();i++){
                std::cout << "i:" << i << "j:" << j << "k:" << k << "src.matrixarr[i][k]:" << src.matrixarr[i][k] << "src2.matrixarr[k][j]:" << src2.matrixarr[k][j] << "\n";
                TEMP.matrixarr[i][j] = src.matrixarr[i][k] + src2.matrixarr[k][j];
            };
        };
    }; 
    return TEMP;
};

如果你这样做,你应该看到一些东西。

另外,可能另一个答案也有问题。如果你按照我的方式去做,你会发现什么。