如何在C中使用此代码进入while循环

时间:2018-11-30 15:05:13

标签: c while-loop

我刚刚开始学习C语言,并试图创建自己的函数。 但是,我不明白为什么我的while循环不能在这段代码中运行。我尝试了许多方法,例如==,!=,<,> ...等,但我不明白为什么它无法正常运行。

PS。我误解了什么是阶乘:(我在所有人的劝告下更改了代码。谢谢

#include <stdio.h>

int my_iterative_factorial(int nb)
{
  int i;
  int store;

  i = 1;
  if(nb == '0')
    return(0);
  while (nb > 0)
  {
    i = i * nb;
    nb--;
  }
  return(i);
}

int main(void)
{
  int nb;

  nb = 5;
  printf("%d\n",my_iterative_factorial(nb));
  return(0);
}

2 个答案:

答案 0 :(得分:6)

这里

while (nb > '0')

应该是这样

while (nb > 0)

'0'0非常不同。 '0'是整数文字,就像0一样,但是它表示显示为0的字符的值。通常(在ASCII中)的值为48 。因此while (nb > '0')等效于while (nb > 48),这就是为什么它不起作用的原因。

此外,循环不会终止。不要忘记在每次迭代中减少nb

答案 1 :(得分:3)

您的 nb var包含一个整数(int),您尝试将其与字符'0'进行比较

将“ 0”替换为0

顺便说一句, nb 在您的while循环中不会改变。更改后将导致无限循环。