当前位置: 代码迷 >> C语言 >> 整型数据未赋值前的数值是哪来的?
  详细解决方案

整型数据未赋值前的数值是哪来的?

热度:103   发布时间:2007-10-15 22:39:24.0
整型数据未赋值前的数值是哪来的?
程序如下
main()
{ int o,p,q;
printf("o=%d,p=%d,q=%d\n",o,p,q);
}

这个程序中,输出结果为o=0,p=64,q=3129请问这个值是从哪里来的?好像并不是随机,我将o、p、q改成i、j、k输出结果也一样。

是TC中定义好的吗?
搜索更多相关的解决方案: 整型  赋值  数值  数据  定义  

----------------解决方案--------------------------------------------------------
这肯定是随机值,不知LZ是如何这么肯定不是随机值的。
你的改法并不能说明你的论点
----------------解决方案--------------------------------------------------------

你应该换一台电脑看看 这个是随机的 .


----------------解决方案--------------------------------------------------------
是随机的一个数  不过好象没有什么意义哦
----------------解决方案--------------------------------------------------------
是这样的,int a;变量a被定义,并通过编译器给a分配一个内存空间(内存地址),然后a=3;往里面赋值。

但当定义但未赋值前,这个内存地址有可能是其它程序运行用过的,那个程序退出后,留下了这个内存空间,由于此空间没有指针指向,于是操作系统认为它是可用的(空闲的),分配给了你的程序。所以,你的a=3只是复盖原来的值。而你没有赋值前,这个值是多少是不知道的。

至于为什么看上去都一样不是随机的,原因是当你运行你的同一个程序时,如果系统环境没改变,编译器会把同一个内存地址分配给你的a,只要那个地址没有被重新利用过,值就一直不变。

明白了没?
----------------解决方案--------------------------------------------------------
LS 说的够清楚了    好样的  
----------------解决方案--------------------------------------------------------
cobby说得很详细,我明白了,谢谢。
但我希望琴之弦和pinglideyu能在你们自己机器上把这段程序试一下,然后把结果发上来
----------------解决方案--------------------------------------------------------

和你的一样


----------------解决方案--------------------------------------------------------

随机的


----------------解决方案--------------------------------------------------------
有的编译器是随机的,有些是全赋0,不过TC里好像是随机的,如果是整型数组的话,那肯定是赋0了
----------------解决方案--------------------------------------------------------
  相关解决方案