簡體   English   中英

C ++無限代碼吊死了嗎? 冷凍? 我不確定

[英]C++ Infinite Sum Code Hanging? Freezing? I'm not sure

好的,所以我嘗試使用for循環而不是while循環來計算無窮大,而織補代碼無法正常工作,我不確定為什么。 我得到兩個“我到這里”的一次,然后什么也沒有。 :\\

有誰知道為什么我的代碼無法正常工作,只是看起來像凍結或掛起? 循環應該以我制作它們的方式結束,對嗎? 這是當前的問題代碼

        check=0;
        cerr << "I got here" << endl;
        for (int m=1;m<m+1;m++)
        {
          cerr << "I got here" << endl;
            for (int n=1;n<n+1;n++)
            {
                if (check==0)
                {
                  anaPhi[i][j][k]=1.0/(m*m*m*n*n*n)
                  *cos(k*deltat*sqrt(5.0)*pi/4.0
                  *sqrt(m*m+4.0*n*n))
                  *sin(m*pi*i*h/4.0)
                  *sin(n*pi*j*h/2.0);
                  check=1;
                }
                else
                {
                  anaPhi[i][j][k]= anaPhi[i][j][k]
                  +1.0/(m*m*m*n*n*n)
                  *cos(k*deltat*sqrt(5.0)*pi/4.0
                  *sqrt(m*m+4.0*n*n))
                  *sin(m*pi*i*h/4.0)
                  *sin(n*pi*j*h/2.0);
                }
            }
        }
    }

我剛剛測試了此代碼,但此代碼也無法正常工作!

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int b=0;
    for (int m=1;m<m+1;m=m+2)
    {
        b=cos(b)+sqrt(b);
    }
    cout << b << endl;
    return 0;
}

您的循環條件是錯誤的。 m<m+1怎么會是假的?

還有一點:

 if (check=0)

應該

 if (check == 0) //^^logical comparison not assignment

我看到幾個問題。

  1. if(check=0)將始終將check設置為0。

  2. 因為您使用n= n+2 ,所以它永遠不會中斷。 因為在某個時刻,您到達n = 0x7FFFFFFE(最高正偶數),在這種情況下,n + 1大於n。 然后將其包裝為0x80000000(帶負號的int,偶數仍為偶數),並且n + 1仍將大於n。 如果能夠得到n = 0x7FFFFFFF,則由於整數環繞,n + 1實際上會小於n。

  3. 除了滿足條件集之外,似乎沒有其他方法可以打破for循環。

暫無
暫無

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

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