| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 738 人关注过本帖
标题:一个函数的问题,百思不得其解 。请各位帮我看看
取消只看楼主 加入收藏
飞扬冲天
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:122
注 册:2011-10-21
结帖率:66.67%
收藏
 问题点数:0 回复次数:2 
一个函数的问题,百思不得其解 。请各位帮我看看
/*   file1.c    */
#include "file2.c"
#include "file3.c"
#include
int i=1;
next()
{ return(i++);}
void main()
{
    int i,j;
    i=reset();
    for(j=1;j<=3;j++)
    {
        printf("i=%d\t  j=%d\t",i,j);
        printf("next()=%d\t",next());
        printf("last()=%d\t",last());
        printf("now(i+j)=%d\t",now(i+j));
        printf("\n");
    }
 }

/*   file2.c    */
static int i=10;
last()
{ return(i-=1);}
now(int i)
{
    static int j=5;
    return(i=j+=++i);
}


/*   file3.c   */
extern int i;
reset()
{ return(i);}


书上说程序结果是:
i=1    j=1    next()=1    last()=9    new(i+j)=8
i=1    j=2    next()=2    last()=8    new(i+j)=12
i=1    j=3    next()=3    last()=7    new(i+j)=17


怎么i的值一直是1啊?虽然main函数里重新定义了一个i,但这儿有一个 i=reset();,而且file3.c里的i明明说extern说明了的啊?高手求解!!!

还有,怎么我用vc 6.0编译的时候他会给我报错:
file1.c(4) : error C2374: 'i' : redefinition; multiple initialization
file2.c(1) : see declaration of 'i'
file2.c的i是static的啊...搞不懂...只好重新改了个 名字。

高手帮帮我吧...
搜索更多相关主题的帖子: include return 
2011-11-26 09:59
飞扬冲天
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:122
注 册:2011-10-21
收藏
得分:0 
回复 楼主 飞扬冲天
还是不咋懂...那个reset(i)应该是找外部变量那个i啊....next();  return(i++);后i不就会变成2和3了吗?....
2011-11-26 11:59
飞扬冲天
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:122
注 册:2011-10-21
收藏
得分:0 
回复 4楼 luchar
嗯,终于明白了,谢谢了哈。
2011-11-28 13:01
快速回复:一个函数的问题,百思不得其解 。请各位帮我看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026354 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved