在C语言中,为什么定义变量的时候总是初始化为0呢?该怎么理解。

请问为什么很多时候都是初始化为0,这个0是一个整数型的数值还是一个概念东西。搞不懂为什么是0而不是其他的?希望能举例说明。谢谢下面各位的回复。... 请问为什么很多时候都是初始化为0,这个0是一个整数型的数值还是一个概念东西。
搞不懂为什么是0而不是其他的?希望能举例说明。

谢谢下面各位的回复。
展开
 我来答
符洁愚媚
2019-07-16 · TA获得超过3.5万个赞
知道大有可为答主
回答量:1.2万
采纳率:31%
帮助的人:933万
展开全部
因为变量是可以变动的,定义一个变量不初始化时,变量会是一个随机数,进行计算了的时候,就会引用那个随机数进行计算,会有误差。
百度网友06afe66
推荐于2018-04-19
知道答主
回答量:33
采纳率:0%
帮助的人:24.1万
展开全部
初始化时,会为变量开辟存储空间,然后把字节变成0000 0000(就相当于复位)。

存在这种可能,该地址以前已使用过,但系统并没有回收,擦除。就存在脏数据。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龚炜林
2012-12-15 · TA获得超过1560个赞
知道大有可为答主
回答量:1102
采纳率:66%
帮助的人:581万
展开全部
如果你不想去研究汇编代码,那就记住:静态存储区的变量初始化为0,堆栈区(也就是局部)的变量初始化值看编译器,VC++6.0里的编译器初始化时把函数要用的堆栈区全初始化为0xcccccccc,而堆区(动态开辟)的值是不定的。
给你一个简单的测试
#include <stdio.h>
#include <malloc.h>
int a;
int main()
{
int b;
int *c = (int *)malloc(sizeof(int));
static int d;
printf("%x\n%x\n%x\n%x\n", a,b,*c,d);
free(c);
return 0;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yr574963536
2012-12-15
知道答主
回答量:3
采纳率:0%
帮助的人:4592
展开全部
如果全局变量在定义时不初始化则初始值是0,如果局部变量在定义时不初始化则初始值是不确定的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没字天书
2012-12-15
知道答主
回答量:10
采纳率:0%
帮助的人:6.5万
展开全部
谁说总是初始化0的,全局变量和静态变量会,局部变量不一定,可恨的不同的编译所采用的方式可能也不一样,所以建议在使用任何变量前自己要初始化
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式