C++ 为什么我的代码会导致高返回值?C++;

C++ 为什么我的代码会导致高返回值?C++;,c++,performance,return-value,C++,Performance,Return Value,所以我做了一个函数,它将进行矩阵乘法,这个函数似乎做了我希望它做的事情 然而,该程序似乎非常慢,当使用该函数时,我得到一个高返回值(3221225477) 是什么导致这个函数运行得这么慢,我能做些什么使它更快 friend Matrix operator *(const Matrix &src, const Matrix &src2) { Matrix TEMP(src.matrixarr.size(),src2.matrixarr[1].size(),0);

所以我做了一个函数,它将进行矩阵乘法,这个函数似乎做了我希望它做的事情

然而,该程序似乎非常慢,当使用该函数时,我得到一个高返回值(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;
};
友元矩阵算子*(常数矩阵&src,常数矩阵&src2){
矩阵温度(src.matrixarr.size(),src2.matrixarr[1].size(),0);
对于(int i=0;i
您的代码中有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;
};
友元矩阵算子*(常数矩阵&src,常数矩阵&src2){
矩阵温度(src.matrixarr.size(),src2.matrixarr[1].size(),0);
对于(int i=0;i


至于值
322225477
,它是十六进制的
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;
};
友元矩阵算子*(常数矩阵&src,常数矩阵&src2){
矩阵温度(src.matrixarr.size(),src2.matrixarr[1].size(),0);
对于(int i=0;istd::cout它实际上是在返回吗?对我来说,它似乎是一个无限循环。无论如何,你能发布一个吗?因为我们不能理解返回值指的是什么,这个方法返回的是一个矩阵,而不是一个数字。对于初学者来说,你永远不会递增
j
k
。十六进制中的高值是0xC0000005-这是AC的错误代码Windows上的CysSype违规。这可能是一个巧合吗?你可以尝试打印出i、j和k的值,或者使用调试器查看它们的值。如果你这样做,你的程序就会出现问题。这个人是C++的新手,不要给他直接的答案。给他工具找出错误。