| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1728 人关注过本帖
标题:全局变量初始值是0怎么不算赋初值吗?
取消只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏
 问题点数:0 回复次数:1 
全局变量初始值是0怎么不算赋初值吗?
使用代码
int iGlobal  ;       // _BSS
int iGlobal1=0x0   ;     // 全局初始化区
int iGlobal2=0x2   ;

int main()
{
    printf("iGlobal=0x%x,0x%p\n",
        iGlobal,&iGlobal);  
    printf("iGlobal1=0x%x,0x%p\n",
        iGlobal1,&iGlobal1);
    printf("iGlobal2=0x%x,0x%p\n",
        iGlobal2,&iGlobal2);
    return 0;
} 做测试发现,变量iGlobal1存在了 bss段中,而不是存放在data段中,这是因为赋初值为 0 时被VC编译器优化了成未初始化变量 还是这个变量本身就应该被看出未初始化呢 ?

[[it] 本帖最后由 vfdff 于 2008-11-3 02:03 编辑 [/it]]

全局变量初始化.JPG (67.11 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 初始化 全局变量 bss data 
2008-11-03 01:55
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
共享变量在赋初值为 0 的时候有不同的表现
使用代码:
#pragma data_seg(".shared")
int iGlobal0  ;       // _BSS
int iGlobal1=0x0   ;     // 全局初始化区
int iGlobal2=0x2   ;
#pragma data_seg()

int main()
{
   
    printf("iGlobal0=0x%x,0x%p\n",
        iGlobal0,&iGlobal0);  
    printf("iGlobal1=0x%x,0x%p\n",
        iGlobal1,&iGlobal1);
    printf("iGlobal2=0x%x,0x%p\n",
        iGlobal2,&iGlobal2);

    return 0;
}

测试,我们能看到,不像全局变量,共享变量 即使被赋成初值 0,它也算经过了赋值操作,将不再被存放在.bss段中

共享变量的初始化.JPG (64.65 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-11-03 02:06
快速回复:全局变量初始值是0怎么不算赋初值吗?
数据加载中...
 
   



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

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