求一个奇怪的C语言现象。谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/05 21:15:16
#include <stdio.h>
int foo(void){
int i;
printf("%d\n",i);
i=777;
}
main(){
foo();
foo();
}
运行结果是
134518128
777

#include <stdio.h>
int foo(void){
int i;
printf("%d\n",i);
i=777;
}
main(){
foo();
puts("abc");
foo();
}
结果却是:
134518244
abc
134513440
为什么第二次调用foo的结果不同?

int i;
printf("%d\n",i);
i没有赋值就使用,是一个不确定的值

诶~
无话可说
第一次调用你申请到i,它的值随机,然后你输出这个随机值,然后你写进777,然后这个值被释放.
第二次调用你申请到i,(此是申请到的空间有可能恰好是上次申请的i空间,所以有可能读到里面的777,但是若中间你又进行了其它操作,那么不同的编译器实现起来就说不清楚了),然后你输出这个随机值,然后你写进777,然后这个值被释放.

int i;
printf("%d\n",i);
问题出在这里,i没有赋值是不确定的,输出使用时输出的是系统内一个随机的数,不同时间的结果是不同的。

你在没有给i赋值的情况下打印出它的值是个随机值,所以会出现那种情况!