C++ 我的程序没有';我运行它时不显示任何内容(圆周率在C+;+;)中的近似值)

C++ 我的程序没有';我运行它时不显示任何内容(圆周率在C+;+;)中的近似值),c++,C++,正如标题所示,我正在尝试运行该程序,但它没有显示任何内容,没有错误,什么都没有 到目前为止,我的代码是: /* based on : pi^2/6 = 1/1^2 + 1/2^2 + 1/3^2 + .... + 1/n^2 */ #include <iostream> #include <cmath> using namespace std; int main() { long long i; long double sum, fraction, pi;

正如标题所示,我正在尝试运行该程序,但它没有显示任何内容,没有错误,什么都没有 到目前为止,我的代码是:

/* based on : pi^2/6 = 1/1^2 + 1/2^2 + 1/3^2 + .... + 1/n^2 */

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

int main()
{
  long long i;
  long double sum, fraction, pi;

  sum = 0.0 ;           /* sum reprisents: 1/1^2 + 1/2^2 + 1/3^2 + .... + 1/n^2 */
  i = 1;              /* i as the denominator of the fraction */
  fraction = 1.0;    /* fraction = 1/(((long double) i)*((long double) i)); */

  while (fraction > 1.0e-15);
  {
     sum += fraction;
     fraction = (long double)1 / (((long double) i)*((long double) i));
     i++;
  }  
  pi = sqrt(6*sum);  /* getting pi since currently it's : pi^2/6 = sum */ 
  cout << "pi = " << pi << endl;

  return 0;
}
/*基于:pi^2/6=1/1^2+1/2^2+1/3^2+…+1/n^2*/
#包括
#包括
使用名称空间std;
int main()
{
龙龙我;
长双和,分数,π;
总和=0.0;/*总和转述:1/1^2+1/2^2+1/3^2+1/n^2*/
i=1;/*i作为分数的分母*/
分数=1.0;/*分数=1/((长双精度)i)*((长双精度)i))*/
而(分数>1.0e-15);
{
总和+=分数;
分数=(长双精度)1/((长双精度)i)*((长双精度)i));
i++;
}  
pi=sqrt(6*sum);/*正在获取pi,因为当前它是:pi^2/6=sum*/

cout你的
while
后面紧跟着一个分号,这使得它永远旋转而不会到达分数被更新的块

您所写的解析与此相同:

while (fraction > 1.0e-15) {
}

// I'll never reach this block
{
   sum += fraction;
   fraction = (long double)1 / (((long double) i)*((long double) i));
   i++;
}

编辑:这是在开发过程中使用linter和/或自动代码格式化程序的一个很好的理由,因为它们会导致明显的错误。

回答下面的问题。但是编译器警告消息告诉了你什么?任何编译器都会警告这个可能的错误。你应该听。如果你没有打开编译器警告,那么你应该ld找出如何做到这一点,并始终将其打开。打开编译器警告并修复它们:。警告应该与错误一样严重(如果不是更多),您只需要帮助编译器报告它们(例如
-Wall-Werror
对于gcc来说是可以的)除了上面提到的错误,我希望fwiw之前的一行
I++
不需要使用高级工具。阅读编译器警告就足够了(在本例中)是的,警告通常会告诉您“有问题”这通常是足够的。但是我认为用“代码> CLAN格式和 Cang-Tydiy 这样的工具是一个很大的帮助,尤其是对于那些先进入C++的人,需要一些手握。如果你的编辑器在代码中键入,马上就告诉你,这会使错误更加明显。谢谢。各位!我的程序现在正在运行,不幸的是,它没有达到我希望的结果,但我会继续努力,