| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 643 人关注过本帖
标题:【求助】基础问题搞不懂~~
只看楼主 加入收藏
fishburger
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2011-2-9
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:12 
【求助】基础问题搞不懂~~
以下程序,请问为什么结果是
****a=10
******a=5
a=10
****a=25

而不是
****a=10
******a=5
a=25
****a=25

另外,如果我把第六行的int删掉,为什么结果会是
****a=10
******a=10
a=100
****a=100

有没有int有什么区别?

#include<stdio.h>
int a=5;
main()
{
    void funn();
    int a=10;
    printf("****a=%d\n",a);
    {
        extern int a;
        printf("******a=%d\n",a);
        a*=a;
    }
    printf("a=%d\n",a);
    funn();
}
void funn()
{
    printf("****a=%d\n",a);
}



谢谢各位大侠!!!

[ 本帖最后由 fishburger 于 2011-2-10 00:16 编辑 ]
搜索更多相关主题的帖子: void include 
2011-02-09 23:19
huangapple
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:545
专家分:1790
注 册:2010-12-30
收藏
得分:0 
楼主这问题非常好

勤能补拙,熟能生巧!
2011-02-09 23:25
qq312154421
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:124
专家分:120
注 册:2010-6-7
收藏
得分:4 
#include<stdio.h>
int a=5;
main()
{
    void funn();                                          
    int a=10;                                             
    printf("****a=%d\n",a);//这个是局部变量a=10
    {
        extern int a;
        printf("******a=%d\n",a);//这个是全局变量a=5
        a*=a;                  //这个也是全局变量a=5*5
    }
    printf("a=%d\n",a);         //这个是局部变量a=10
    funn();                     //这个是全局变量a=25
}
void funn()
{
    printf("****a=%d\n",a);
}
纯属个人理解

勤奋不止,自强不息。
2011-02-09 23:38
qq312154421
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:124
专家分:120
注 册:2010-6-7
收藏
得分:0 
另外,如果我把第六行的int删掉,为什么结果会是
****a=10
******a=5
a=10
****a=25
我运行的结果是:
****a=10
******a=10
a=100
****a=100
那这个就比较好理解
printf("****a=%d\n",a);     //这时a=10
    {
        extern int a;
        printf("******a=%d\n",a);//也是a=10
        a*=a;
    }
    printf("a=%d\n",a);//因为上面重新赋值了所以a=100
    funn();             //这个也a=100


勤奋不止,自强不息。
2011-02-10 00:06
cacker
该用户已被删除
收藏
得分:6 
提示: 作者被禁止或删除 内容自动屏蔽
2011-02-10 00:07
fishburger
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2011-2-9
收藏
得分:0 
回复 3楼 qq312154421
谢谢!您的意思就是说a*=a;使全局变量a重新赋值成为25?然后复合语句中的结果不会影响第13行printf的结果?为什么第14行funn()会是全局变量呢,他前面没有加extern啊?期待您的再次解答!!!谢谢~
2011-02-10 13:33
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2011-02-10 13:40
fishburger
Rank: 1
等 级:新手上路
帖 子:5
专家分:1
注 册:2011-2-9
收藏
得分:0 
回复 7楼 cacker
谢谢~!现在有点明白了!还有一个问题,如果把int a=10,改为a=10,会出现10,10,100,100的结果呢?extern丧失作用了?还是说把全部变量由5改成10了?或者是其他的。。。谢谢!!
2011-02-10 14:13
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2011-02-10 14:42
nxnxwyc
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2010-11-29
收藏
得分:0 
我想问问main()的第2个{,有必要写上去吗?去掉不行吗?
2011-02-10 14:45
快速回复:【求助】基础问题搞不懂~~
数据加载中...
 
   



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

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