好的,所以我正在尝试使用for循环而不是while循环来计算无限和,并且darn代码不起作用,我不知道为什么。我得到了两个“我来到这里”,然后什么都没有。 :\
有谁知道为什么我的代码无法工作,只是看起来像冻结或挂起?循环应该以我制作它们的方式结束,对吧? 以下是当前的问题代码
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;
}
答案 0 :(得分:1)
您的循环条件错误。 m<m+1
将如何虚假?
答案 1 :(得分:1)
还有一点:
if (check=0)
应该是
if (check == 0) //^^logical comparison not assignment
答案 2 :(得分:1)
我看到了几个问题。
if(check=0)
将始终设置为0。
因为您使用n= n+2
,所以它不会破坏。因为在某些时候你得到n = 0x7FFFFFFE(最高正偶数)并且在这种情况下n + 1是> ñ。然后它包装到0x80000000(最负的符号int,仍然是偶数),n + 1仍将是&gt; ñ。如果你能够得到n = 0x7FFFFFFF,那么由于整数回绕,n + 1实际上会小于n。
似乎没有任何其他方法可以打破for循环而不是满足设置的代码。