첫 번째 코드는 1의 경우 82로 나옵니다. 계승 ... 왜? do 루프가 완벽하게 작동한다고 생각하면 실제로 나에게 어떤 의미가 없습니다. 프로그램을 실행하면 계승에 대한 모든 답을 제공하는 표가 나타납니다. do 루프는 내가해야 할 일은 괜찮지 만 사용할 수는 없다.실행하면 왜 82로 표시됩니까? For 루프 - Factorial
for 루프가 제대로 작동하지 않는 이유는 무엇입니까?
#include <stdio.h> /* Necessary header */
#define LAST_NUMBER 25 /* Macro preset to avoid magic numbers */
int main(void) /* Start executive method */
{
int Nbr;
signed long total = Nbr;
printf("Nbr Nbr!"); /* Table Headers */
printf("\n----------------------");
for (Nbr = 1; Nbr<=LAST_NUMBER;) /* Loop statement begins */
{
total *= Nbr;
printf("\n%2d %15ld", Nbr, total);
Nbr++;
/* Prints both columns for table */
} /* Loop ends when predefined number is reached */
return 0;
} /* End main method */
/* The following code works fine */
#include <stdio.h> /* Necessary header */
#define LAST_NUMBER 25 /* Macro preset to avoid magic numbers */
int main(void) /* Start executive method */
{
int Nbr = 1;
signed long total = Nbr;
printf("Nbr Nbr!"); /* Table Headers */
printf("\n----------------------");
do /* Loop statement begins */
{
total *= Nbr;
printf("\n%2d %15ld", Nbr, total); /* Prints both columns for table */
Nbr++;
}while (Nbr<=LAST_NUMBER); /* Loop ends when predefined number is reached */
return 0;
} /* End main method */
첫 번째 예에서는 'total'을 가비지로 초기화하고 두 번째 예에서는'1 '로 초기화합니다. – geoffspear
계승 값이 21에서 64 비트 범위를 초과합니다. 에. –
예. 나는 알아 챘지만, 현재의 주제에 대해서는 그렇게 중요하지 않다. – user1728737