C for循环中的If语句-无限循环
在下面的代码中,我运行一个嵌套的for循环,并在循环中检查statment是否为true。如果是这样,则加载内核并使用该内核执行卷积。主要是输入图像 当我运行代码时,它变成了一个无限循环。我不明白为什么C for循环中的If语句-无限循环,c,if-statement,for-loop,C,If Statement,For Loop,在下面的代码中,我运行一个嵌套的for循环,并在循环中检查statment是否为true。如果是这样,则加载内核并使用该内核执行卷积。主要是输入图像 当我运行代码时,它变成了一个无限循环。我不明白为什么 for(m=0;m<h;m++) { for(k=0;k<v;k++) { if( (m = 261) && (k=361)) { printf("%f", Thickness[
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);
}
}
}
for(m=0;mif((m=261)和&(k=361))
这是一项作业。
如果你想比较一些东西:
- 要实现相等,请使用
==
- 对于较小/较大:
- 对于不相等:
!=
这两种情况是相等的。如果f2为空,则
if(f2 != nullptr)
if(f2)
如果f2不为空,则
注意:nullptr是c++11的特性。如果不使用c++11,请使用NULL insead
编辑:正如@unwind所评论的,有两个作业。
由于261
始终为非零,因此第一个条件始终为真。它将继续计算右侧,并将361
分配给kif((m=261)和&(k=361))
这是一个分配。
如果你想比较一些东西:
- 要实现相等,请使用
==
- 对于较小/较大:
- 对于不相等:
!=
这两种情况是相等的。如果f2为空,则
if(f2 != nullptr)
if(f2)
如果f2不为空,则
注意:nullptr是c++11的特性。如果不使用c++11,请使用NULL insead
编辑:正如@unwind所评论的,有两个作业。
由于261
始终为非零,因此第一个条件始终为真。它将继续计算右侧并将361
赋值给k您在此处将值赋值给m
:如果((m=261)和(&&&(k=361))
这始终为真(因为它是非零值)。
应该是
if((m==261)和&(k==361))
您在这里为m
赋值:if((m=261)和&(k=361))
,这始终是真的(因为它是非零值)。
应该是
if((m==261)和&(k==361))
如果启用编译器警告,编译器将有助于指出一些简单错误,例如if((m=261)和&(k=361))
。我认为if((m=261)和&(k=361))这应该是if((m==261和(k==361))语句if((m=261)和(k=361))
将始终为真,并将m
和k
设置为这些值。我们不知道h
和v
是什么,但它们小于261和361。您需要的是相等的比较,=
,而不是赋值,=
,在这里。非常感谢您。如果我必须输入大于或小于?的话有趣的是,在if((f2=fopen(fn,“rb”)==NULL)
行中,您已经正确使用了这两个不同的运算符。如果启用编译器警告,编译器将有助于指出一些简单的错误,例如if((m=261)和&(k=361))
。我认为if((m=261)和&(k=361))应该是if((m=261)和&(k=361))语句if((m=261)和&(k=361))
将始终为真,并将m
和k
设置为这些值。我们不知道h
和v
是什么,但它们小于261和361。您需要的是相等的比较,=
,而不是赋值,=
,在这里。非常感谢您。如果我必须输入大于或小于?的话有趣的是,在行if((f2=fopen(fn,“rb”)==NULL)
中,您已经正确地使用了这两个不同的运算符。实际上这是两个赋值,因为261
始终为非零&
将继续并计算右侧,也将赋值给k
。),由于261
始终为非零,&&
将继续计算右侧,并分配给k
。)