我正在使用循环打印以下模式:
1 12 123 1234 12345
为什么以下代码在显示模式之前显示一些随机值?当我使用递归到一些随机函数func(int a, int b)
并将值(1,1)传递main
给此函数时,它工作正常.
int a=1,b=1;
int main(int a, int b)
{
if(a>5)
return 0;
else if(b<a)
{
printf("%d",b);
main(a,++b);
}
else if(b==a)
{
printf("%d ",b);
main(++a,1);
}
}
Run Code Online (Sandbox Code Playgroud)
根据C标准1,该main()
功能的以下签名有效:
int main(void)
Run Code Online (Sandbox Code Playgroud)
和
int main(int argc, char* argv[])
Run Code Online (Sandbox Code Playgroud)
当您将命令行的参数传递给main()
函数时(总是至少有一个:程序的名称始终是第一个元素argv[]
,即,argv[0]
),你得到奇怪的结果,因为参数被转换为你的整数值.
因此,您应该使用自己的函数进行递归任务,例如int func(int a, int b)
,如您所述.
1注意:我的答案有点过于简单了.有关更详细和正确的说明,请参阅此答案.
归档时间: |
|
查看次数: |
309 次 |
最近记录: |