gpt4 book ai didi

c - 如果我使用 else, "EVEN NUMBER ENTERED"会打印一次,如果我不使用,它会打印两次。为什么?

转载 作者:行者123 更新时间:2023-11-30 20:31:28 25 4
gpt4 key购买 nike

#include<stdio.h>

int main()
{
int num;
printf("Enter a EVEN Number: ");
scanf("%d",&num);

if (num%2!=0)
{
printf("WRONG INPUT\n\n");
main();
}

printf("EVEN NUMBER ENTERED\n");
}

Here Is The Output For Above Code When I DONT USE ELSE

这与 C 程序如何使用堆栈存储信息有关吗?或者我错过了一些概念

最佳答案

当您将 3 作为输入时,if 条件为 true,main() 将被第二次调用。

然后你给出了一个偶数作为输入,在这种情况下,控制流不会进入 if 的主体,只会打印“EVEN NUMBER ENTERED”消息,然后程序控制退出第二个main()

现在,控件返回到递归调用 main() 的位置,并执行第一个 main() 调用的剩余部分,该调用恰好是相同的“偶数已输入”消息。

参见this关于使 main() 递归。递归 main() 不被认为是好的。

考虑创建另一个函数,然后从 main() 调用它,例如

int fn()
{
int num;
printf("Enter an EVEN Number: ");
scanf("%d",&num);

if (num%2!=0)
{
printf("WRONG INPUT\n\n");
return fn();
}
printf("EVEN NUMBER ENTERED\n");
}

或者像之前一样使用else

关于c - 如果我使用 else, "EVEN NUMBER ENTERED"会打印一次,如果我不使用,它会打印两次。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50820450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com