我刚刚开始学习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);
}
答案 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循环中不会改变。更改后将导致无限循环。