C语言中未初始化的变量的值是0么

就是定义了变量但是未给其赋值,此时它的值是随机数还是0?

全局变量静态变量初始值为0,局部变量,自动变量初始值随机分配。

定义局部变量,其实就是在栈中通过移动栈指针来给程序提供一个内存空间和这个局部变量名绑定。因为这段内存空间在栈上,而栈内存是反复使用的,所以说使用栈来实现的局部变量定义时如果不显式初始化,值就是0的。

全局变量链接时已分配空间,程序运行时,操作系统的加载器,负责把链接器分配给全局变量的虚拟内存空间,映射到一个初始化为零的页面,所以被初始化为零。全局和静态的默认初始化都是靠加载机制实现的。另外:未初始化的符号在目标文件的bss段中,而初始化的符号在data段中。

扩展资料

c语言变量的存储类型,变量的初始化

存储变量值的内存类型,有普通内存、运行时堆栈、硬件寄存器。默认存储类型与变量声明位置有关:像全局变量这样代码块之外声明的变量存储在静态内存中,不在堆栈里,程序执行期间始终存在;

代码块内声明的变量默认存储类型是自动的(automatic),称为自动(auto)变量,存储在堆栈中,执行到代码块时被创建,代码块执行完即被销毁。

可以给自动变量加上关键字static,将它变为静态存储类型,它就会在程序运行期间一直存在,但是它的作用域是不变的,代码块外面还是不能用这个变量。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-30
C语言中,全局变量和局部静态变量是存储在静态存储区的,他们在分配的时候都被系统默认初始化为0;而局部自动变量是在栈上分配内存的,如果不对它们进行初始化,那么他们可能是任意的随机值。
第2个回答  2012-10-30
普通的变量定义时未赋初值,那么系统赋予它一个随机垃圾值。如果static int a;即静态变量未赋初值,系统认为是0.
第3个回答  推荐于2017-11-25
这要看你定义的变量的属性
全局变量 静态变量初始值为0
局部变量,自动变量初始值随机分配本回答被提问者和网友采纳
第4个回答  2012-10-30
根据编译器而定,不同的编译环境是不同的。
有的是0, 有的是-1,有的是随机值。
相似回答