整型数据未赋值前的数值是哪来的?
程序如下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了
----------------解决方案--------------------------------------------------------