当前位置: 代码迷 >> C语言 >> 这个程序具体怎样运行的?
  详细解决方案

这个程序具体怎样运行的?

热度:153   发布时间:2007-03-19 22:12:09.0
这个程序具体怎样运行的?

int i=0;
main()
{int i=5;
reset(i/2); printf("i=%d\n",i);
reset(i=i/2); printf("i=%d\n",i);
reset(i/2); printf("i=%d\n",i);
workover(i); printf("i=%d\n",i);
}
workover(int i)
{i=(i%i)*(2*i+4);
printf("i=%d\n",i);
return(i);
}
reset(int i)
{i=i<=2?5:0;
return(i);
}
这个程序具体是怎么运行的

为什么第二个reset执行完的结果是2

[此贴子已经被作者于2007-3-19 22:14:53编辑过]

搜索更多相关的解决方案: 运行  运行  

----------------解决方案--------------------------------------------------------
你的函数reset虽然返回了值,可是你并没有赋给任何变量
第二个结果2是这样的:
reset(i=i/2);你在传递实参的同时也给i赋值了,i是全局变量所以值一直保留
i此时是5,除2得2,所以输出是2(你的i是整型)
----------------解决方案--------------------------------------------------------
函数都没有声明怎么运行的,
----------------解决方案--------------------------------------------------------

只要考虑一下全局变量和局部变量优先的问题,在局部变量范围内,全局变量会被屏蔽


----------------解决方案--------------------------------------------------------
printf()、scanf()因为使用次数多被编译器特批不用声明
----------------解决方案--------------------------------------------------------
我不是说这两个函数,而是他自己定义的两个函数,定义在MAIN后面不是要声明吗?
----------------解决方案--------------------------------------------------------
这个恐怕要怪老谭了,他的书里函数都没有提前声明过,所以很多人也这样学了
不过那样也可以编译运行,如果初学者要深入学习,会自己去看ANSI C的
----------------解决方案--------------------------------------------------------
对于古老TC也可以这样的
----------------解决方案--------------------------------------------------------
  相关解决方案