Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么这会导致infinte循环?_C++_Loops - Fatal编程技术网

C++ 为什么这会导致infinte循环?

C++ 为什么这会导致infinte循环?,c++,loops,C++,Loops,我不熟悉编码,我的任务是通过将1/n相加为递增的“n”,使变量“sum”大于不等于m 我需要两次解决相同的问题,一次使用for循环,一次使用while循环。但这两种方式都以一个infinte循环结束 当我将Epression 1/n替换为long类型的n时,我的代码工作得很好,如果值大于1,则始终会产生0,因为您使用整数类型操作。因此,在第一次运行时,sum将被指定为1,但永远不会达到大于1的值,因为forth on always 0被相加 将代码更改为 double sumsum =

我不熟悉编码,我的任务是通过将1/n相加为递增的“n”,使变量“sum”大于不等于m

我需要两次解决相同的问题,一次使用for循环,一次使用while循环。但这两种方式都以一个infinte循环结束

当我将Epression 1/n替换为long类型的n时,我的代码工作得很好,如果值大于1,则始终会产生0,因为您使用整数类型操作。因此,在第一次运行时,sum将被指定为1,但永远不会达到大于1的值,因为forth on always 0被相加

将代码更改为

    double sumsum = 1.0/n;

它应该会起作用。请注意,1.0强制使用浮点运算。

当单步执行代码时,调试器显示了什么?找出停止执行您认为应该执行的操作的确切位置。将每个变量的实际值与您的期望值进行比较。您甚至可以使用一些std::cout来实现这一点,但从长远来看,学习如何使用调试器是一个更好的主意。无论如何,对于大约20行代码来说并不难。你很快就会找到确切的地点。将双总和=1/n;使总和加倍=1.0/n;。表达式1/n是整数除法,如果n>1,则计算结果为0。谢谢Thorsten Dittmar和Christian Hackl。看起来1/n不起作用。但我自己也不明白为什么。但多亏了你,大卫·莱弗利,我知道问题出在哪里了。谢谢大家的帮助
    double sumsum = 1.0/n;