为什么下面这个程序到j=11755就停下来了(platform:winXP)??

wizardblue 2004-12-14 12:01:07
#include<stdio.h>
int i=0,j=0;
int main(){
printf("i=%d %d\n",i,j++);
if(i<12)main();
return 0;
}
...全文
174 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Michael_555 2004-12-14
  • 打赏
  • 举报
回复
哈哈,我的机器到了130191才溢出。
archim 2004-12-14
  • 打赏
  • 举报
回复
i<12永远不满足
始终是会溢出的
avalonBBS 2004-12-14
  • 打赏
  • 举报
回复
platform:win2k vc6
到50000都没停。。。
ywfscu 2004-12-14
  • 打赏
  • 举报
回复
居然可以这样写!没见过,可能是堆栈过深
goodluckyxl 2004-12-14
  • 打赏
  • 举报
回复
栈满了吧

stack overflow
goodluckyxl 2004-12-14
  • 打赏
  • 举报
回复
晕你们运行这个代码有什么意义
就象测试内存大小不断分配一样
是要原因...
yrbmayu 2004-12-14
  • 打赏
  • 举报
回复
我跟楼主一样
11755
baryjim 2004-12-14
  • 打赏
  • 举报
回复
犯个错误,谢谢24607660(冰山上的瞌睡) 和conccy(pc_cool)指点。^_^
IS_NOT_NULL 2004-12-14
  • 打赏
  • 举报
回复
我的机器是65095才停
conccy 2004-12-14
  • 打赏
  • 举报
回复
j==0
j++没有被执行!
24607660 2004-12-14
  • 打赏
  • 举报
回复
if (j>0)
printf("i=%d %d\n",i,j++);

下面那句就不可能运行,怎么可能输出呢?
baryjim 2004-12-14
  • 打赏
  • 举报
回复
急切盼望高手来解答,为什么这样写根本不输出哪?

#include<stdio.h>
int i=0,j=0;
int main(){
if (j>0)
printf("i=%d %d\n",i,j++);
if(i<12)main();
return 0;
}
baryjim 2004-12-14
  • 打赏
  • 举报
回复
果然如此,看如果改成这样
#include<stdio.h>
int i=0,j=0;
int main(){
printf("i=%d %d\n",i,j++);
int x; //多这个变量
if(i<12)main();
return 0;
}
则执行到11244

如果加上
int x;
int y;
执行到10766就停了,显然内存被限制了
baryjim 2004-12-14
  • 打赏
  • 举报
回复
我想是因为在vc编译的程序中,对递归的限制吧,递归超过多少层就不可以了,这应该和存储器大小有关系,尤其是内存及其堆栈的大小。
carylin 2004-12-14
  • 打赏
  • 举报
回复
my god!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧