#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");
}
这与 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/