你好,我有一个幻灯片的例子,我似乎不明白为什么函数中的while循环只发生一次。我解释它的方式是它会永远持续下去,但显然它不会。为什么这个函数的while循环无限运行?
#include <stdio.h>
int main()
{
int a = 481;
int b = 910;
int result = 0;
result = gcd(a, b);
printf("%d\n", result);
return 0;
}
int gcd(int a, int b)
{
while(b!=0) // HERE IS MY PROBLEM!, Wouldn't this while loop go on forever?
{
int tmp = b;
b = a% b;
a = tmp; // how could 'a' be 13 if tmp is 0, at beginning they do tmp = b(0)
}
return a;
}
我只是不明白它...它说,虽然B不等于0,和我们的B是910,所以它永远不会是0,这意味着while循环永远不会结束,现在做它?同样在函数tmp = b中,它是0然后它们修改b,但是即使它们修改b温度仍然为0,因为在修改之前b原本是0 ..这里是内嵌..
编辑: 我犯了错误,说tmp = b将始终为0,从内部函数看b的值,并忘记b从外部910。
如果你调试它,这是非常容易理解的。我只是没有得到的是为什么你不会调试。在循环内添加一些'printf'语句。您还应该启用警告并处理它们。 – 2014-10-05 21:04:39
我会尝试这种信息。 – Belphegor 2014-10-05 21:05:29
@DavidHeffernan说了些什么,或者只是在调试器中遍历循环几次以查看真正发生了什么? – 2014-10-05 21:05:35