关于全局变量和局部变量初试值的问题
如果全局Long变量 L 在只申明而不初始化赋值的时候默认是0
然而局部Long变量 L 在只申明而不初始化赋值的时候默认是-858993460
想知道为什么。请不要认为我的问题无聊,这里只是考虑为什么会这样。
环境是Windows2000+VC6.0
问题点数:20、回复次数:9Top
1 楼ydfivy(我就是一送外卖的)回复于 2006-03-21 09:48:47 得分 5
全局变量在进入函数入口之前.运行期函数会为其初始化.
而局部变量是程序员来赋初值.
Top
2 楼expert2000(ZLX)回复于 2006-03-21 09:52:10 得分 2
楼上正解Top
3 楼zez(思恩 闭关练功ing...)回复于 2006-03-21 09:59:38 得分 2
然而局部Long变量 L 在只申明而不初始化赋值的时候默认是-858993460
默认值是随机的!!!
局部变量仅仅是分配了一块内存,原来内存里是多少,这个变量值就是多少!!Top
4 楼magicdigua(潘振宇)回复于 2006-03-21 11:02:57 得分 0
局部变量 为什么没有初始化的情况下面是-858993460?不仅仅只是随机啊,我测试了几台机器都是这样的。Top
5 楼magicdigua(潘振宇)回复于 2006-03-21 11:04:42 得分 0
呵呵,能不能想办法查到原先那块内存到底存储了什么?为什么总是-858993460啊。Top
6 楼haha168_2002(啥时候我能成为高手啊?)回复于 2006-03-21 11:12:09 得分 5
书上说:
编译器不会自动将局部变量初始化为0,如果你在定义局部变量时没有对它进行初始化,则他的值是不确定的。我的编译器显示为:575Top
7 楼duduhaha(三人行必有我师)回复于 2006-03-21 11:17:18 得分 2
嗯.随机的.Top
8 楼jsjjms(专心研究嵌入式)回复于 2006-03-21 11:19:15 得分 2
随机的。Top
9 楼terryjwf(开大奔的帅哥)回复于 2006-03-21 11:24:39 得分 2
全局变量是在内存的全局区分配的,由编译器自动初始化为0;
局部变量在内存的栈区中分配的,由用户自己负责初始化,如果用户没有初始化,就会由编译器初始化一个随机数;
Top




