在下面的代码中,我运行一个嵌套的for循环,并在循环中检查该状态是否为真。如果是这样,则加载一个内核,并与该内核一起执行卷积。主要是输入图像。
当我运行代码时,它就变成了一个无限循环。我不明白为什么。
for(m=0;m<h;m++)
{
for(k=0;k<v;k++)
{
if( (m = 261) && (k=361))
{
printf("%f", Thickness[m][k]);
printf("%d,%d",m,k);
sprintf(fn,"F:\\newresult\\fft\\neww8_25.raw");
if ((f2=fopen( fn, "rb" )) == NULL)
{
printf("Pb lecture fichier %s\n", fn);
exit(1);
}
for(int a = 0; a < krow; ++a)
for(int b = 0; b < kcol; ++b)
fread(&Kernel[a][b], sizeof(float), 1, f2);
fclose(f2);
for(int a = 0; a < krow; ++a)
for(int b = 0; b < kcol; ++b)
sum+=Kernel[a][b];
for(int a = 0; a < krow; ++a)
for(int b = 0; b < kcol; ++b)
Kernel[a][b] /= sum;
//convolute
s1 = convolve2D(primary, s1, m, k, Kernel, krow , kcol);
}
}
}发布于 2014-09-25 14:04:47
if ((m = 261) && (k=361))这是个作业。
如果你想比较某件事:
==</>!=if(f2 == nullptr)
if(!f2)两种情况都是平等的。如果f2 为空,那么..。
if(f2 != nullptr)
if(f2)如果f2 不是空,那么..。
注意: nullptr是c++11特性。如果不使用c++11,则使用NULL insead。
编辑:作为@unwind评论,有两个作业。
由于261总是非零的,所以第一个条件总是真的。它将继续评估右侧,并将361分配给k。
发布于 2014-09-25 14:12:20
您在这里将值赋值给m:if( (m = 261) && (k=361)),它始终是真的(因为它是非零值)。应该是if( (m == 261) && (k==361))
https://stackoverflow.com/questions/26040582
复制相似问题