簡體   English   中英

for循環中的if語句-無限循環

[英]If statement in for loop -infinite loop

我有以下代碼,我在其中運行一個嵌套的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);
        }
    }
}

if ((m = 261) && (k=361))這是一個分配。
如果您想比較一些東西:

  • 為了平等,請使用==
  • 對於更少/更大: < / >
  • 對於非平等: !=

if(f2 == nullptr)
if(!f2)

兩種情況都相等。 如果f2 null,則...

if(f2 != nullptr)
if(f2)

如果f2 不為 null,則...


注意: nullptr是c ++ 11功能。 如果不使用c ++ 11,請使用NULL insead。

編輯:正如@unwind評論,有兩個作業。
由於261始終為非零,因此第一條件始終為true。 它將繼續評估右側,並將361分配給k

您在這里為m分配值: if( (m = 261) && (k=361))始終為真(因為它是非零值)。 應該是if( (m == 261) && (k==361))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM