| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 396 人关注过本帖
标题:再请教一题,辛苦大侠们了!
只看楼主 加入收藏
flyam
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-10-4
结帖率:0
收藏
 问题点数:0 回复次数:3 
再请教一题,辛苦大侠们了!
请考虑下面(错误的)C程序:

void foo ( ) {
int i ;
p r i n t f ( "%d " , i ++);
}

int main ( ){ int j ;
for ( j = 0 ; j < 1 0 ; ++j ) foo ( ) ;
}

子程序foo里的局部变量根本没有初始化。然而在许多系统里,这个程序却会显示出可重复的行为,打印

0 1 2 3 4 5 6 7 8 9。请给出一个解释。也请解释为什么在其他系统里这个程序的行为可能是另外情况,或

者是不确定的。
搜索更多相关主题的帖子: 辛苦 
2009-10-04 11:17
chenaiyuxue
Rank: 5Rank: 5
来 自:山东滨州
等 级:职业侠客
帖 子:334
专家分:370
注 册:2008-5-20
收藏
得分:0 
可能有的编译系统会自动将i初始化为0,否则i的值不确定,为给它分配的存储空间中原有的数值。

你是雪,我是尘埃,相遇是意外;你坠落,在我胸怀,流进我血脉。
2009-10-04 14:53
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
如果能打印出0 1 2 3……那么就是系统默认没有初始化的int型的初值为0.
2009-10-04 16:02
李光亮
Rank: 2
等 级:论坛游民
帖 子:43
专家分:51
注 册:2009-9-21
收藏
得分:0 
或许每个编译器的对定义的变量设初始值的原理是不一样的,(目前只能这样理解了)我的小见解
2009-10-05 09:22
快速回复:再请教一题,辛苦大侠们了!
数据加载中...
 
   



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

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