c++ - 为什么此代码不返回空矩阵?

标签 c++ c

为什么下面粘贴的代码不返回空矩阵,而是返回沿主对角线具有 NaN 的矩阵? 我哪里做错了?

if(g = 0)
{
for(i=0;i<N;i++)
    {
    for(j=N;j<2*N;j++)
        {
        fnd[i][j]=0;
        }
    }
}

else
{
for(i=0;i<N;i++)
    {
    for(p=0;p<N;p++)
        {
        if(p!=i)
            {
            fnd[i][i+N]+=g*g*3.*fabs(x[i]-x[p])*fabs(x[i+N]-x[p+N]) /fabs(pow(fabs(pow(fabs(x[i]-x[p]),2.)+g*g*pow(fabs(x[i+N]-x[p+N]),2.)+h*h*pow(fabs(x[i+2*N]-x[p+2*N]),2)),2.5) );
            }
        }
    for(j=N;j<2*N;j++)
        {
              //offdiagonal terms<------
        if(i!=j)
            {
            fnd[i][j]=-3.*g*g*fabs(x[i]-x[j-N])* fabs(x[i+N]-x[j])/fabs(pow(fabs(pow(x[i]-x[j-N],2.)+g*g*pow(x[i+N]-x[j],2.)+h*h*pow(x[i+2*N]-x[j+N],2)),2.5) )  ;
            }
          }
    }
}


//-------------------------------------------------------

最佳答案

除了可能的其他内容(这不是完整的代码),if(g = 0) 应该使用 == 而不是普通的 =.正如所写,g 将始终被分配为零,然后它的计算结果将始终为 false,因此将矩阵初始化为全零的循环不会实际运行。相反,整个 else block 将在 g 为零的情况下运行,我认为这是意外的。

关于c++ - 为什么此代码不返回空矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21545147/

相关文章:

c++ - 运算符重载--(前缀)

c++ - SDL_DisplayFormat

c++ - CRT 和 WIN32 API

c - 从 C 中的函数返回结构

编译两个c文件不起作用,找不到 header

c - free() 导致 SEG 故障 C

C++:第一个非重复字符,使用 HashMap 的 O(n) 时间

c++ - 运行时错误 : addition of unsigned offset to 0x603000000040 overflowed to 0x603000000034 (STL_vector. h)

java - 什么数组结构存在于 C# 中,但存在于 C/C++/Java 中?

c - Malloc 信号 : SIGABRT (signal SIGABRT) problem