Chinaunix首页 | 论坛 | 博客
  • 博客访问: 784387
  • 博文数量: 161
  • 博客积分: 10005
  • 博客等级: 中将
  • 技术积分: 1445
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-04 15:08
文章分类

全部博文(161)

文章存档

2014年(1)

2013年(1)

2011年(2)

2010年(18)

2009年(26)

2008年(18)

2007年(66)

2006年(29)

我的朋友

分类: C/C++

2007-12-26 14:47:37

看下边三个程序及其输出结果:auto变量省略关键字
程序一:
#include
void sum();
main()
{
 int i=0;
 sum();
 cout<<"in main i="< sum();
 cout<<"in main i="<}
void sum()
{
 int i=0;
 i=i+1;
 cout<<"in sum i="<}
程序二:
#include
void sum();
main()
{
 int i;
 sum();
 cout<<"in main i="< sum();
 cout<<"in main i="<}
void sum()
{
 int i;
 i=i+1;
 cout<<"in sum i="<}
程序三:
#include
void sum();
main()
{
 static int i;
 sum();
 cout<<"in main i="< sum();
 cout<<"in main i="<}
void sum()
{
 int i=0;
 i=i+1;
 cout<<"in sum i="<}
 
输出结果:
程序一:
in sum i=1
in main i=0
in sum i=1
in main i=0
第二次sum中的i值为1,因为auto变量不保存历史值。
程序二:
in sum i=10985674
in main i=11764532
in sum i=12387659
in main i=11764532
输出无关值,因为auto变量不做初始化。
程序三:
in sum i=1
in main i=0
in sum i=2
in main i=0
第二次sum值i为2,因为static变量保留历史值。
 
由此可知其区别为:
1、静态变量在没有明确的初始值时会自动初始化为0或者空(NULL)
2、静态变量在离开作用域后他的值会保持不变。
阅读(2912) | 评论(1) | 转发(0) |
0

上一篇:你肯定误解的常识

下一篇:央视大楼

给主人留下些什么吧!~~

chinaunix网友2008-03-12 21:45:42

程序三应为: in sum i=1 in main i=0 in sum i=1 in main i=0