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

就是定义了变量但是未给其赋值,此时它的值是随机数还是0?... 就是定义了变量但是未给其赋值,此时它的值是随机数还是0? 展开
 我来答
小星星教育知识分享
高粉答主

2019-11-28 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67130

向TA提问 私信TA
展开全部

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

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

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

扩展资料

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

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

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

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

孙永超fight
2012-10-30 · TA获得超过732个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:666万
展开全部
C语言中,全局变量和局部静态变量是存储在静态存储区的,他们在分配的时候都被系统默认初始化为0;而局部自动变量是在栈上分配内存的,如果不对它们进行初始化,那么他们可能是任意的随机值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友144dd69f1
2012-10-30 · TA获得超过183个赞
知道答主
回答量:84
采纳率:0%
帮助的人:69.5万
展开全部
普通的变量定义时未赋初值,那么系统赋予它一个随机垃圾值。如果static int a;即静态变量未赋初值,系统认为是0.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wang12zhe
推荐于2017-11-25 · TA获得超过1636个赞
知道小有建树答主
回答量:676
采纳率:100%
帮助的人:286万
展开全部
这要看你定义的变量的属性
全局变量 静态变量初始值为0
局部变量,自动变量初始值随机分配
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kingfeng588
2012-10-30 · TA获得超过2494个赞
知道大有可为答主
回答量:1475
采纳率:50%
帮助的人:1789万
展开全部
根据编译器而定,不同的编译环境是不同的。
有的是0, 有的是-1,有的是随机值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式