как попасть в то время как цикл с этим кодом в C - PullRequest
0 голосов
/ 30 ноября 2018

Я только начинаю изучать язык 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 голосов
/ 30 ноября 2018

Ваш nb var содержит целое число (int), и вы пытаетесь сравнить его с символом '0'

. Замените '0' на 0

.Кстати, nb не меняется в вашем цикле while.это приведет к бесконечному циклу после изменения.

0 голосов
/ 30 ноября 2018

Это здесь

while (nb > '0')

Должно быть так:

while (nb > 0)

'0' и 0 очень разные.'0' - это целочисленный литерал, точно так же как 0, но он представляет значение символа, которое отображается как 0. Обычно (в ASCII ) это значение 48.Так что while (nb > '0') эквивалентно while (nb > 48), поэтому оно не сработало.

Кроме того, цикл не завершается.Не забывайте уменьшать nb в каждой итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...