c - 如何在 C 中使用此代码进入 while 循环
问题描述
我刚刚开始学习 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);
}
解决方案
这里
while (nb > '0')
应该是这样的:
while (nb > 0)
'0'
并且0
非常不同。'0'
是一个整数文字,就像0
,但它表示显示为 0 的字符的值。通常(在ASCII中)是48
. 所以while (nb > '0')
相当于while (nb > 48)
,这就是它不起作用的原因。
此外,循环不会终止。不要忘记nb
在每次迭代中减少。
推荐阅读
- python - 在 Keras 功能 api 中链接层的正确方法是什么?
- c - spin_lock_irqsave 中的 flag 参数保存了哪些信息?
- primefaces - 如何将 PrimeFaces 安装为 Wildfly 模块?
- google-apps-script - 如果勾选了复选框,则使用 If 语句添加时间戳
- android - 如何使用 Android kotlin firebase 将照片添加到 recycleview
- c# - Pipelines.Sockets.Unofficial.SocketConnection 是否会在没有请求的情况下刷新?
- c - 如何将数据从父进程发送到子进程和信号
- list - 如何查找和输出包括最大数量(所有列表)的列表?序言
- java - Java -version 在安装 java 11 时显示 java 8
- google-cloud-iot - 如何使用在 Google Linux 实例上运行的服务器向 IoT 网关发送消息